WinForms模态窗口alt + tab问题

时间:2010-04-16 07:28:12

标签: winforms modal-dialog switching

假设多个模态Windows 显示在彼此之上。 所有这些都有ShowInTaskbar = false,这意味着在TaskBar中您只能看到MainForm并隐藏所有模态窗口。

现在按 ALT + TAB ,最上面的模态Windows消失。但你不能把它拿回来。

您认为如何正确完成这项工作?

2 个答案:

答案 0 :(得分:7)

如果模态窗口卡在主窗体后面,听起来好像你没有设置它的主人。当您致电showDialog()时,您需要传递主要表单,如下所示:

modalWin.showDialog(mainForm);

如果您致电showDialog(),并且您的程序中有另一个应该位于其下的表单,则最好将其作为所有者传递。如果在已有模态窗口时显示模态窗口,则将第一个模态窗口作为所有者传递。

答案 1 :(得分:0)

好的只是为了完成它:

这是如何将所有者设置为Winform的Winform:

form.ShowDialog(ownerInstance);

这是如何将所有者设置为WPF窗口的Winform:

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

这是如何将Ownder设置为Wpf窗口的Wpf窗口:

.Owner = Window.GetWindow(ownerInstance)