Form "handling" / Form Handle Verwalten
-
Hi Leute,
ich habe ne Frage bezüglich eines zweiten Forms das ich aufrufe.
Also folgende Situation:Ich erstelle mir ein zweites Form:
Form2 form2 = new Form2(); form2.Show();
Damit ich auch später noch auf mein zweites Form zugreifen kann,
lege ich mir das Handle von Form2 ab:
[cs]
**
Form2 form2Handle;
form2Handle = null;
**
(...)
private void form2erstellen()
{
Form2 form2 = new Form2();
form2.Show();
form2Handle = form2
}
[/cs]Nun alles schön und gut, aber jetzt kommt mein Problem:
Wenn ich das zweite Form über den roten X Button schließe,
dann habe ich auf meinem ersten Form ein ungültiges Handle
das ins nix führt.**
Ich hätte gerne das mein Form1 mitbekommt, dass das Form2
beendet worden ist. Jedoch ohne das ich in Form2 explizit
eine Methode in Form1 aufrufen muss.
**Gibt es da eine saubere Möglichkeit die ganze Geschichte Übersichtlich
und effektiv zu gestalten?Hoffe ihr könnt mir helfen!
MFG!
Jeg
-
Ja aber ist doch richtig, wenn das Form geschlossen wird, ist das Form weg, dann hast du auch kein Handle mehr, wo ist da jetzt das Problem?Kein Form, kein Handle.
Ich weiß grad nicht so richtig, was das Problem ist.
-
hi Firefighter,
sorry hab meine Frage noch mal verdeutlicht.
Gruß
Jeg
-
Du willst also, das dein Form2 das Form1 darüber informiert, wenn es geschlossen wurde?Wie wäre der Ansatz über Delegates?
-
Also was mich stört ist, dass es ja möglich sein soll das ich von
einem beliebigen anderem Form das Form2 aufrufen kann.
Jedoch soll es nicht möglich sein das Form2 mehr als nur einmal
aufzurufen!Dazu prüfe ich ob der Handle des Form2 null ist.
Das blöde ist ja nur, dass sobalt der User das Form beendet
mein Handle nicht wieder auf null gesetzt wird.Ich weiß nicht in wie weit mich die Delegates unterstützen könnten.
Kann natürlich sein das ich diese Technik noch nicht ausreichend kenne.
Werde es aber noch einmal damit probieren.Gruß
Jeg
-
Achso, nee da unterstützen die dich auch nicht.Aber das Singelton-Muster könnte dir da helfen.Such einfach mal danach, und wenn du Probleme bei der implementierung hast, frag hier einfach nach.
-
Jeg_D schrieb:
**
Ich hätte gerne das mein Form1 mitbekommt, dass das Form2
beendet worden ist. Jedoch ohne das ich in Form2 explizit
eine Methode in Form1 aufrufen muss.
**Gibt es da eine saubere Möglichkeit die ganze Geschichte Übersichtlich
und effektiv zu gestalten?Wie sage ich so gern: MSDN is your friend...
http://msdn.microsoft.com/de-de/library/system.windows.forms.form.closed(VS.80).aspx
Also in Form1 closed-event von Form2 anmelden und wenn das Event ausgelöst wird Handle auf null setzen.