Wie lässt sich Form1 aktivieren, wenn man von Form2 zurückkehrt?
-
Hallo!
Von Form1 aus starte ich Form2:
Form2^ F2 = gcnew Form2(); F2->Show(); this->Enabled = false;
Wenn ich jetzt Form2 schließe ist die Form1 noch deaktiviert.
Die sollte aber wieder aktiv werden...Wie kann ich das realisieren?
Ich hoffe auf eure Hilfe.
-
Vielleicht
this->Enabled = true;
-
Da du show statt showDialog verwendest, gehe ich davon aus das du eine MDI Anwendung programmierst, richtig?
-
NewtonsLaw schrieb:
Vielleicht
this->Enabled = true;
Nee, das geht ja nicht.
Weil das "this" sich in dem Fall auf die Form2 bezieht, die ich aber gerade schließe.Ich will halt nicht, dass auf Form1 etwas angeklickt werden kann, während Form2 aktiv ist.
Wenn das MDI ist(?), dann ja.
-
nibbler schrieb:
Ich will halt nicht, dass auf Form1 etwas angeklickt werden kann, während Form2 aktiv ist.
Dann nimm doch einfach ShowDialog(), dann bleibt deine Form2 solange aktiv im Vordergrung, bis der User etwas angeklickt hat (Weiter Button auf Form2 z.B.). In Form1 kann derweil nix geändert werden.
-
Gut, aber der Nutzer wird mehrere Felder (Textboxen, Buttons) anklicken.
Wenn Form1 nach Anklicken nur eines Feldes auf Form2 schon wieder aktiv ist, dann hilft mir das leider nciht weiter.
-
nibbler schrieb:
Gut, aber der Nutzer wird mehrere Felder (Textboxen, Buttons) anklicken.
Wenn Form1 nach Anklicken nur eines Feldes auf Form2 schon wieder aktiv ist, dann hilft mir das leider nciht weiter.Na, das musst du eben so programmieren, wie du das brauchst!
Brauchst ja nur einen Button als "Rückkehr-Button" coden, dann kann der User rumklicken wo er will und Form2 bleibt offen (solange der Rückkehr-Button nicht gedrückt wird)
-
Hi Nibbler,
wie NewtonsLaw es schrieb:Brauchst ja nur einen Button als "Rückkehr-Button" coden
Form2^F2 = gcnew Form2(); this->Enabled=false; F2->ShowDialog();//Bis Form2 geschlossen wird wird der Folgecode nicht ausgeführt this->Enabled=true;//Form2 wurde geschlossen, Code wird weiter ausgeführt und Form1 wird wieder aktiviert
wäre jetzt die übertriebene Version.
Mit ShowDialog() wird das Fenster als modales Dialogfenster angezeigt, du kannst soviel anklicken in Form2 wie du willst, an Form1 lässt sich nichts ändern bis du das Dialogfenster Form2 geschlossen hast. Schließen kann z. B. durch das schließen über das gute alte Windows "X" passieren oder über einen Bestätigungsbutton oder sonstwo im Code.Du könntest noch für die Hintergrunddarstellung wie im obigen Beispiel die beiden Zeilen zum Deaktivieren und Aktivieren mit einfügen, damit man optisch bemerkt das Form1 im Moment nicht änderbar ist. Halte ich selbst für unnötig, ist aber Geschmackssache.
Probier es einfach mal aus...und sieh dir den Ablauf mit dem Debugger in Einzelschritten mal an, z. B. mit Show() und mit ShowDialog(), dann wird der Unterschied klarer.