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 } }
Ce code amélioré fait ce qui suit:
FormClosed
est attaché au formulaire initial (form1). Application.OpenForms.Count == 0
), Application.ExitThread()
arrête gracieusement l'application. 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!