Application.OpenForms.Count gibt immer Null zurück
In Windows Forms-Anwendungen wird häufig der Zugriff auf die Application.OpenForms-Eigenschaft verwendet, um eine Sammlung abzurufen der aktuell geöffneten Formulare. Es gibt jedoch einen bekannten Fehler, der dazu führen kann, dass die Eigenschaft Application.OpenForms.Count durchgängig Null zurückgibt.
Dieses Problem tritt auf, wenn bestimmte Eigenschaften nach der Erstellung des Formulars geändert werden. Diese Eigenschaften include:
When Wenn eine dieser Eigenschaften geändert wird, nachdem CreateWindowEx() zum Erstellen des Formularfensters aufgerufen wurde, muss Windows Forms das ursprüngliche Fenster zerstören und ein neues mit den aktualisierten Stilflags erstellen. Aufgrund eines Fehlers fügt die Application-Klasse das neue Formular jedoch nicht korrekt zur OpenForms-Sammlung hinzu. Dies führt dazu, dass die Application.OpenForms.Count-Eigenschaft immer Null zurückgibt.
Lösung
Um diesen Fehler zu vermeiden, legen Sie eine der oben genannten Eigenschaften immer nur in fest Konstruktor des Formulars. Vermeiden Sie es, sie in Ereignishandlern oder anderem Code zu ändern, der nach dem Aufruf von CreateWindowEx() ausgeführt wird.
Alternativen zu Application.OpenForms
Im Allgemeinen ist es ratsam, sich nicht darauf zu verlassen auf der Application.OpenForms-Eigenschaft aufgrund dieses Fehlers. Erwägen Sie stattdessen, die Formularinstanz über ihren Konstruktor an die Klasse zu übergeben, die das Meldungsfeld anzeigen muss. MessageBox bestimmt normalerweise automatisch das richtige übergeordnete Fenster und zeigt in den meisten Fällen das Meldungsfeld über dem aktiven Fenster an.
Das obige ist der detaillierte Inhalt vonWarum gibt Application.OpenForms.Count in meiner Windows Forms-App immer Null zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!