Wie kann ich verhindern, dass ein Dialogfenster ausgeblendet wird?

8

Wenn ich eine von System.Windows.Window abgeleitete Klasse erzeuge und sie mit ShowDialog zeige, erscheint sie wie erwartet über dem Hauptfenster und das Hauptfenster ist deaktiviert. Es ist jedoch möglich, beide Fenster hinter andere Anwendungen zu stellen und dann das Hauptfenster wieder zu öffnen. Dies hinterlässt nur ein einziges Fenster, das scheinbar abgestürzt ist und verwirrend sein kann.

Kann sichergestellt werden, dass das Dialogfenster immer angezeigt wird, wenn das Hauptfenster angezeigt wird? Das MessageBox.Show-Dialogfeld hat solche Probleme nicht

Aktualisierung:

Ein Testdialog ist definiert als

%Vor%

und mit

aufgerufen %Vor%     
David Sykes 31.05.2012, 07:56
quelle

3 Antworten

7

Sie müssen die Owner-Eigenschaft festlegen.

%Vor%     
blindmeis 31.05.2012, 08:27
quelle
1

Um sicherzustellen, dass das Dialogfenster immer angezeigt wird, wenn das Hauptfenster angezeigt wird, fügen Sie den Handler zum Hauptformular Sichtbarkeit geändertem Ereignis hinzu, um TopMost true oder false auf untergeordnetes Formular entsprechend der Hauptsichtbarkeit zu setzen

%Vor%

Aktualisieren

%Vor%

Das letzte Heilmittel, das ich denken kann, ist, einen Timer mit user32 dll getforegroundwindow zu verwenden, um zu überprüfen, ob das Hauptformular sichtbar ist.

    
Amen Ayach 31.05.2012 08:10
quelle
1

Dieser Code sollte wie gewünscht funktionieren

%Vor%     
Klaus78 31.05.2012 08:40
quelle

Tags und Links