Maison > développement back-end > C++ > Comment puis-je maintenir mon application en cours d'exécution après la fermeture du formulaire de démarrage?

Comment puis-je maintenir mon application en cours d'exécution après la fermeture du formulaire de démarrage?

Susan Sarandon
Libérer: 2025-01-29 10:16:09
original
476 Les gens l'ont consulté

How Can I Keep My Application Running After Closing the Startup Form?

Garder votre application active après la fermeture du formulaire de démarrage

Vous avez probablement rencontré un problème où la fermeture du formulaire initial (Form1) a également terminé l'ensemble de l'application, même si d'autres formulaires (comme Form2) étaient ouverts. En effet, le cycle de vie de l'application est lié à la forme principale.

Cacheter simplement Form1 au lieu de la fermer, il maintient l'application en cours d'exécution, mais introduit un problème: l'application ne se fera pas gracieusement lorsque Form2 est fermé.

La solution réside dans la modification du code Program.cs, qui contrôle le comportement d'arrêt de l'application. Voici le code ajusté pour maintenir l'application en cours après la fermeture du formulaire initial:

    [STAThread]
    static void Main() {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Form1 main = new Form1();
        main.FormClosed += FormClosed;
        main.Show();
        Application.Run();
    }

    static void FormClosed(object sender, FormClosedEventArgs e) {
        ((Form)sender).FormClosed -= FormClosed; //Detach event handler
        if (Application.OpenForms.Count == 0) {
            Application.ExitThread(); // Exit only when all forms are closed
        } else {
            Application.OpenForms[0].FormClosed += FormClosed; // Attach to the next open form
        }
    }
Copier après la connexion

Ce code amélioré fait ce qui suit:

  • Gestion des événements: Le gestionnaire d'événements FormClosed est attaché au formulaire initial (form1).
  • Surveillance de fermeture du formulaire: Il vérifie si des formulaires sont toujours ouverts après la fermeture d'un formulaire.
  • Arrêt gracieux: Si aucun formulaire ne reste (Application.OpenForms.Count == 0), Application.ExitThread() arrête gracieusement l'application.
  • REATTACHINMENT DE LA GÉRENCE D'ÉVÉNEMENTS: Si d'autres formulaires sont ouverts, le gestionnaire d'événements FormClosed est attaché à la prochaine forme ouverte, assurant une surveillance continue.

Cette approche permet à Form2 de rester ouvert après la fermeture du formulaire 1, et l'application ne se terminera que lorsque toutes les formulaires seront 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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal