Von einer zweiten Form wieder zur MainForm wechseln



  • Guten Tag.

    Ich öffne von meinem Hauptformular "MainForm" ein zweites Formular "Form2".

    Ich benutze dafür folgenden Code:

    Form2 hehe = new Form2();
    hehe.Show();
    this.Hide(); // "this" ist hier 'MainForm'
    

    Wenn ich jetzt aus Form2 wieder zur MainForm wechseln möchte, mache ich es folgendermaßen:

    MainForm bla = new MainForm();
    bla.Show();
    this.Hide(); // "this" ist hier 'Form2'
    

    Dabei tritt das Problem auf, dass die Einstellungen von MainForm nicht mehr da sind, z.B. Checkbox-Zustände.
    Das liegt wohl daran, dass ich mit "new" eine neue Instanz von MainForm erzeuge.
    Außerdem wird das Programm nicht beendet, wenn ich es mit dem "X" schließe. Wahrscheinlich weil noch eine MainForm-Instanz offen ist.

    Wie soll ich die MainForm aus Form2 aufrufen?

    Danke für Eure Hilfe,
    das Problemkind



  • Du musst der 2. Form die MainForm übergeben, damit diese sie wieder sichtbar machen kann.

    Beispiel:

    Form2 myForm2 = new Form2(this);
    //...
    

    oder:

    Form2 myForm2 = new Form2();
    myForm2.SetParentForm(this);
    //...
    


  • Hallo cin,

    weder das eine noch das andere klappt.
    Ich kann 'new Form2' keine Parameter übergeben und es gibt keine Methode names 'SetParentForm'.

    Ich benutze das .net-Framework 2.0

    Problemkind



  • So helft mir doch, ich erleide seelische Schmerzen. Das ist echt ein übeles Gefrickel mit den Forms. 😞



  • Wenn Du von Form1 zu Form2 wechselst und dabei Form1 unsichtbar machst, dann fallen mir spontan 2 Dinge ein:

    1. Form1 unsichtbar machen und Form2 modal aufrufen. Such dazu mal in MSDN nach "modal". Da gibts auch ein schönes Beispiel zu.

    2. wenn Form2 nichtmodal angezeigt werden soll, dann nimmt eine Eigenschaft bzw. public Variable auf, welche die Referenz von Form1 enthält. Wird Form2 geschlossen, kann dieses als eine der letzten Amtshandlungen Form1 wieder anzeigen.



  • Hi,

    ich zeige Form2 bereits modal an mittels Form2.ShowDialog();

    Das Problem sind ja nicht nur die Eigenschaften des ersten Formulars, sonder auch die Tatsache, dass beim schließen der MainForm das Programm nicht beendet wird, weil es bereits eine zweite Instanz von MainForm gibt.

    Es kann ja jeder selbst so ein Beispiel erstellen:

    - Zwei Forms in einem Projekt
    - In der MainForm einen Button mit:

    Form1 form1 = new Form1();
    this.Hide();
    form1.ShowDialog();
    

    Im FormClosed-Event von Form1:

    MainForm mainForm = new MainForm();
    mainForm.Show();
    

    Wenn man jetzt in der MainForm auf den Button klickt, öffnet sich Form1. Schließt man Form1, so öffnet sich die MainForm (Einstellungen werden nicht beibeihalten, die auf der MainForm festgelegt wurden).
    Wenn man jetzt die MainForm schließt, so bleibt das Programm trotzdem noch geöffnet (sieht man ganz gut im Debugger).

    Wie ist die die allgemeine Lösung für sowas? Das ist doch ein ganz einfaches und tagtägliches Problem, wenn man mit mehreren Forms arbeitet. 😕

    Problemkind




Anmelden zum Antworten