Maison >développement back-end >C++ >Pourquoi Application.OpenForms.Count renvoie-t-il toujours zéro dans mon application Windows Forms ?
Application.OpenForms.Count renvoie toujours zéro
Dans les applications Windows Forms, l'accès à la propriété Application.OpenForms est couramment utilisé pour obtenir une collection des formulaires actuellement ouverts. Cependant, il existe un bug connu qui peut amener la propriété Application.OpenForms.Count à renvoyer systématiquement zéro.
Ce problème se produit lorsque certaines propriétés sont modifiées après la création du formulaire. Ces propriétés inclure :
Quand Si l'une de ces propriétés est modifiée après l'appel de CreateWindowEx() pour créer la fenêtre du formulaire, Windows Forms doit détruire la fenêtre d'origine et en créer une nouvelle avec les indicateurs de style mis à jour. Cependant, en raison d'un bug, la classe Application n'ajoute pas correctement le nouveau formulaire à la collection OpenForms. Il en résulte que la propriété Application.OpenForms.Count renvoie toujours zéro.
Solution
Pour éviter ce bug, définissez toujours l'une des propriétés mentionnées ci-dessus uniquement dans le constructeur du formulaire. Évitez de les modifier dans les gestionnaires d'événements ou dans tout autre code qui s'exécute après l'appel de CreateWindowEx().
Alternatives à Application.OpenForms
En général, il est conseillé d'éviter de s'appuyer sur sur la propriété Application.OpenForms en raison de ce bug. Envisagez plutôt de transmettre l'instance de formulaire à la classe qui doit afficher la boîte de message via son constructeur. MessageBox détermine généralement automatiquement la fenêtre parent correcte et affichera la boîte de message sur la fenêtre active dans la plupart des cas.
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!