Maison > développement back-end > C++ > Comment puis-je empêcher la terminaison d'inattention de l'application lors de la fermeture des formulaires dans une application Windows multi-formes?

Comment puis-je empêcher la terminaison d'inattention de l'application lors de la fermeture des formulaires dans une application Windows multi-formes?

Linda Hamilton
Libérer: 2025-01-29 10:11:08
original
976 Les gens l'ont consulté

How Can I Prevent Unexpected Application Termination When Closing Forms in a Multi-Form Windows Application?

Gestion de la fermeture du formulaire dans les applications Windows multi-formulaires

Développer des applications Windows multi-formulaires robustes nécessite une gestion minutieuse de la fermeture des formulaires pour éviter les processus de terminaison ou de persistance des applications prématurées. Les problèmes courants incluent l'ensemble de l'application qui s'arrête lorsqu'un formulaire non principal se ferme ou que l'application restant active même après que tous les formulaires visibles sont fermés.

simplement utiliser Show() et Hide() pour gérer la visibilité du formulaire, bien que apparemment simple, est insuffisant. Cacher le formulaire principal tout en affichant d'autres laisse l'application en cours d'exécution indéfiniment, même si toutes les formes visibles sont fermées.

La solution réside dans la modification du fichier Program.cs, qui régit le cycle de vie de l'application. Le code par défaut met souvent fin à l'application lors de la fermeture du formulaire principal. Pour assurer la terminaison appropriée uniquement lorsque toutes les formes sont fermées, ajustez la méthode Program.cs Main comme suit:

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

    static void FormClosed(object sender, FormClosedEventArgs e) {
        ((Form)sender).FormClosed -= FormClosed;
        if (Application.OpenForms.Count == 0) Application.ExitThread();
        else Application.OpenForms[0].FormClosed += FormClosed;
    }</code>
Copier après la connexion

Ce code amélioré joint un gestionnaire d'événements FormClosed au formulaire principal. Lorsqu'un formulaire se ferme, le gestionnaire se détache et vérifie la collection Application.OpenForms. Si vide (il ne reste pas de formulaires), Application.ExitThread() termine gracieusement l'application. Sinon, il réattache le gestionnaire à la prochaine forme ouverte, garantissant une gestion appropriée à travers plusieurs fermetures de formulaires.

Cette approche garantit que votre application multi-forme se termine proprement par tous les formulaires, empêchant un comportement inattendu et améliorant la stabilité de l'application.

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!

source:php.cn
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