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% 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
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.
Tags und Links wpf c# modal-dialog