Maison >développement back-end >C++ >Comment faire fonctionner une application Windows Desktop après la fermeture du formulaire principal?

Comment faire fonctionner une application Windows Desktop après la fermeture du formulaire principal?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-29 10:26:38217parcourir

How to Keep a Windows Desktop Application Running After Closing the Main Form?

Garder votre application Windows Desktop en cours d'exécution après la fermeture du formulaire initial

De nombreuses applications de bureau Windows nécessitent un fonctionnement continu même après la fermeture du formulaire initial (démarrage). Cacher simplement le formulaire de démarrage à l'aide de la méthode Hide() n'est pas idéal, car l'application reste active même avec toutes les formes cachées.

Une solution plus élégante consiste à ajuster le point d'entrée de l'application dans Program.cs. Le comportement par défaut termine automatiquement l'application lorsque le formulaire principal se ferme. Voici comment changer cela:

  1. Attachez un gestionnaire d'événements FormClosé: Ajoutez un gestionnaire d'événements à l'événement FormClosed de votre formulaire principal.
  2. Gérer les formulaires ouverts: Dans le gestionnaire d'événements, retirez le gestionnaire du formulaire fermé. Ensuite, vérifiez le nombre de formulaires ouverts en utilisant Application.OpenForms.Count. Si aucun formulaire n'est ouvert, quittez gracieusement l'application en utilisant Application.ExitThread(). Sinon, attachez le gestionnaire d'événements au prochain formulaire ouvert.

Voici le code Program.cs modifié:

<code class="language-csharp">    [STAThread]
    static void Main() {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        var main = new Form1();
        main.FormClosed += FormClosed; // Attach the event handler
        main.Show();
        Application.Run();
    }

    static void FormClosed(object sender, FormClosedEventArgs e) {
        ((Form)sender).FormClosed -= FormClosed; // Detach from closed form
        if (Application.OpenForms.Count == 0) Application.ExitThread(); // Exit if no forms remain
        else Application.OpenForms[0].FormClosed += FormClosed; // Attach to the next form
    }</code>

Cette approche raffinée garantit que votre application continue en cours d'exécution comme prévu après la fermeture du formulaire initial, offrant une expérience utilisateur plus lisse et plus contrôlée, et ne sortant proprement que lorsque tous les formulaires sont fermés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn