Application.OpenForms.Count meldet fälschlicherweise Null
In einigen Fällen gibt der Application.OpenForms-Zähler einen falschen Wert von Null zurück, wodurch der Wert verdeckt wird tatsächliche Anzahl geöffneter Formulare. Dieses Problem tritt auf, wenn bestimmte Eigenschaften nach der Fenstererstellung geändert werden, insbesondere solche, die sich auf den Fensterstil auswirken.
Betrachten Sie das folgende Beispiel, in dem die ShowInTaskbar-Eigenschaft nach der Initialisierung geändert wird:
public partial class Form1 : Form { public Form1() { InitializeComponent(); button1.Click += button1_Click; } private void button1_Click(object sender, EventArgs e) { Console.WriteLine(Application.OpenForms.Count); this.ShowInTaskbar = !this.ShowInTaskbar; Console.WriteLine(Application.OpenForms.Count); } }
Upon Wenn Sie ShowInTaskbar ändern, verschwindet das Formular aus der Application.OpenForms-Auflistung, obwohl es geöffnet bleibt. Dies ist auf einen zugrunde liegenden Windows Forms-Fehler zurückzuführen, bei dem das Ändern bestimmter Eigenschaften eine Neuerstellung des nativen Fensters mithilfe von CreateWindowEx() auslöst. Dadurch verliert die Anwendungsklasse den Überblick über das Formular, was zu falschen OpenForms-Zählungen führt.
Um diesen Fehler zu vermeiden, sehen Sie davon ab, die folgenden Eigenschaften nach dem Fenster zu ändern Erstellung:
Stattdessen Legen Sie diese Eigenschaften während der Formularerstellung oder auf andere Weise fest, die keine CreateWindowEx()-Erstellung beinhaltet. Vermeiden Sie außerdem, sich ausschließlich auf Application.OpenForms zu verlassen, und erwägen Sie die direkte Übergabe von Formularverweisen an Klassen, die Meldungsfelder anzeigen.
Das obige ist der detaillierte Inhalt vonWarum gibt Application.OpenForms.Count Null zurück, wenn Formulare geöffnet sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!