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.


Anmelden zum Antworten