C# alle Forums außer Form1 schließen
lima-city → Forum → Programmiersprachen → Programmieren mit .NET & Mono
anzahl
auflistung
auslese
code
eigenschaft
element
fenster
folgendes code
folgendes versuchen
form
formular
instanz
liste
meldung
null
programm
schleife
show
umgehen
wahrscheinlich null
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo christian1603,
steht in der Name-Eigenschaft Deiner Form1 auch 'From1' drin?
Wenn nicht, dann liefert Application.OpenForms["Form1"] wahrscheinlich null zurück, was dazu führt, dass alle Fenster geschlossen werden.
Probiere mal Folgendes:
Wenn die MessageBox kommt, dann musst Du vorher irgendwoForm f = Application.OpenForms["Form1"]; if(f == null) { MessageBox.Show("Form1 nicht gefunden."); } else { foreach (Form form in Application.OpenForms) { if (form != f) { form.Close(); } } }
machen, wobei f eine Instanz von Form1 sein muss.f.Name = "Form1";
Edti:
Und falls das Programm doch anderweitig abstürzt, dann wäre die Meldung interessant.
Beitrag zuletzt geändert: 19.3.2011 16:09:24 von darkpandemic -
darkpandemic schrieb:
Hallo christian1603,
steht in der Name-Eigenschaft Deiner Form1 auch 'From1' drin?
Wenn nicht, dann liefert Application.OpenForms["Form1"] wahrscheinlich null zurück, was dazu führt, dass alle Fenster geschlossen werden.
Probiere mal Folgendes:
Wenn die MessageBox kommt, dann musst Du vorher irgendwoForm f = Application.OpenForms["Form1"]; if(f == null) { MessageBox.Show("Form1 nicht gefunden."); } else { foreach (Form form in Application.OpenForms) { if (form != f) { form.Close(); } } }
machen, wobei f eine Instanz von Form1 sein muss.f.Name = "Form1";
Edti:
Und falls das Programm doch anderweitig abstürzt, dann wäre die Meldung interessant.
Danke schonmal.
Das Programm stürzt immer noch ab "Die Auflistung wurde geändert. Der Enumerationsvorgang kann möglicherweise nicht ausgeführt werden." es stürzt aber erst ab wenn mehr als nur eine (Form1) Form offen ist. -
Hallo christian1603,
dann liegt es am foreach. Weil jedesmal, wenn Du ein Formular schließt, natürlich auch die Application.OpenForms-Collection geändert wird.
Um das zu umgehen kannst Du folgendes versuchen:
Form f = Application.OpenForms["Form1"]; if(f == null) { MessageBox.Show("Form1 nicht gefunden."); } else { for(int i = Application.OpenForms.Count-1; i >=0; i--) { if(Application.OpenForms[i] != f) Application.OpenForms[i].Close(); } }
Die Schleife geht von oben nach unten, da sich die Anzahl der Elemente in der Liste mit jedem Form.Close() erniedrigt. -
darkpandemic schrieb:
Hallo christian1603,
dann liegt es am foreach. Weil jedesmal, wenn Du ein Formular schließt, natürlich auch die Application.OpenForms-Collection geändert wird.
Um das zu umgehen kannst Du folgendes versuchen:
Form f = Application.OpenForms["Form1"]; if(f == null) { MessageBox.Show("Form1 nicht gefunden."); } else { for(int i = Application.OpenForms.Count-1; i >=0; i--) { if(Application.OpenForms[i] != f) Application.OpenForms[i].Close(); } }
Die Schleife geht von oben nach unten, da sich die Anzahl der Elemente in der Liste mit jedem Form.Close() erniedrigt.
EIN WEITERES DICKES DANKE! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage