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>
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!