WinForms модальные окна alt + tab проблема - PullRequest
3 голосов
/ 16 апреля 2010

Допустим, несколько Модальные окна показаны друг над другом. Все они имеют ShowInTaskbar = false, что означает, что в TaskBar вы видите только MainForm и все модальные окна скрыты.

Теперь вы нажимаете ALT + TAB и самая верхняя модальная Windows исчезает. Но вы не можете вернуть его впереди.

Как, по вашему мнению, это должно быть сделано правильно?

Ответы [ 2 ]

7 голосов
/ 16 апреля 2010

Если модальное окно застревает за основной формой, похоже, что вы не устанавливаете его владельца. Когда вы звоните showDialog(), вам нужно перейти в основную форму следующим образом:

modalWin.showDialog(mainForm);

Каждый раз, когда вы звоните showDialog(), и ваша программа имеет другую форму, которая должна быть внизу, лучше всего передать ее как владельца. Если вы видите модальное окно, когда модальное окно уже открыто, передайте первое модальное окно как владелец.

0 голосов
/ 16 апреля 2010

ОК. Просто для завершения:

Вот как установить владельца как Winform для Winform:

form.ShowDialog(ownerInstance);

Вот как установить Owner как Winform для окна WPF:

MyWpfDialog dialog = new MyWpfDialog();
new System.Windows.Interop.WindowInteropHelper(dialog).Owner = ownerInstance.Handle;
dialog.ShowDialog();

Вот как установить Ownder в качестве окна Wpf для окна Wpf:

.Owner = Window.GetWindow(ownerInstance)
...