Form1 sperren bis Form2 wieder in Hide() ist
-
Hallo,
ich habe eine sogenannte MainForm. Von dieser aus, kann ich eine weitere Form öffnen, in der ich bestimmte Werte setzen kann, quasi eine PopupForm. Dieses wird über show() und hide() angezeigt/ausgeblendet.
Ich möchte, dass wenn ich die PopupForm anzeige, die MainForm komplett deaktiviert wird (= nicht mehr darauf zugegriffen werden kann) . Oder noch besser wäre (das kennt man ja aus einigen Programmen), wenn die PopupForm über der MainForm liegt, und es unmöglich ist, die Mainform vor die PopupForm zu "klicken", "schieben", etc.
Ist das möglich?
Zusätzlich: Wie kann ich die PopupForm immer so anzeigen, dass sie an derselben Position startet wie die MainForm? Wenn ich die MainForm bsp.weise. oben links habe, und die PopupForm öffne, möchte ich dass die PopupForm nicht in der Mitte des Bildschirmes startet, sondern auf der MainForm.
Danke Leute für euer Interesse und eure Anteilnahme.
-
Nummer98765434 schrieb:
Ich möchte, dass wenn ich die PopupForm anzeige, die MainForm komplett deaktiviert wird (= nicht mehr darauf zugegriffen werden kann) . Oder noch besser wäre (das kennt man ja aus einigen Programmen), wenn die PopupForm über der MainForm liegt, und es unmöglich ist, die Mainform vor die PopupForm zu "klicken", "schieben", etc.
Die Lösung ist denkbar simpel, du zeigst die PopupForm einfach modal an:
PopupForm pf = ...; //Form erstellen etc. pf.ShowDialog(); //<- Darauf kommt's an
Und zur Positionsfrage: Wenn du bei der PopupForm die Property 'StartPosition' auf 'CenterParent' setzt, wird die PopupForm immer zentriert auf der MainForm angezeigt.
-
Dann sollte aber auch
pf.Parent = this; pf.ShowDialog(this);
verwendet werden (ansonsten kennt der Popup-Dialog ja seinen 'Parent' bzw. 'Owner' nicht
-
Die Parent-Zuweisung ist nicht notwendig, denn das Modal gilt ja Application-Wide
Ich setze die Parent- Eigenschaft nur, wenn ich MDI nutze.
-
Vielen Dank für die schnellen und präzisen Antworten, das klingt sehr vielversprechend und einfach, werde es später gleich mal testen, und Rückmeldung geben, Danke schön.
-
Sorry für die späte Antwort, hatte es ganz vergessen, wollte aber nicht undankbar sein und kein Feedback geben und mich bedanken
Also es klappt wunderbar (obwohl ich PopupForm keine wirkliche Popupform, sondern eine normale Form gemeint hatte, macht aber keinen Unterschied
)
DANKE
-
Wie gesagt es funktioniert, aber was jetzt auftritt stört mich ein wenig:
Situation:
-Ich habe irgendein Fenster offen, zum Beispiel Firefox.
-Ich habe die MainForm meiner Applikation offen.
-Ich öffne über meine MainForm eine sog. Popupform (mit ShowDialog() und der Einstellung --> StartPosition=CenterParent).Die Fensterreihenfolge von hinten nach vorne ist natürlich Firefox-->MainForm-->Popup. Das ist korrekt. Wenn ich jetzt das Popup "schliesse" (Hide()), dann schliesst es ganz normal, aber meine MainForm verschwindet hinter das Firefoxfenster. Kann man das verhindern?
-
Hallo,
ein mittels "ShowDialog()" geöffnetes Fenster solltest du mittels "Close()" schließen (oder aber per Zuweisung an "DialogResult").
Durch das Verstecken eines modalen Fensters, wird zwar der "modale" Status rückgängig gemacht, aber das Parent-Fenster nicht wieder vernünftig aktiviert (wie du ja selber festgestellt hast).