假设有多个堆叠在一起的模态窗口。所有这些窗口都设置了
ShowInTaskbar = false
,这意味着在任务栏(TaskBar)
中只会看到MainForm
,而所有模态窗口都被隐藏。
现在你按下ALT+TAB,最上面的模态窗口消失了。但是你无法再将其置于前台。
请问,在您看来,应该如何正确实现此功能?
ShowInTaskbar = false
,这意味着在任务栏(TaskBar)
中只会看到MainForm
,而所有模态窗口都被隐藏。
现在你按下ALT+TAB,最上面的模态窗口消失了。但是你无法再将其置于前台。
请问,在您看来,应该如何正确实现此功能?
如果模态窗口卡在主表单后面,那么很可能你没有设置其所有者。当你调用showDialog()
时,需要像这样传递主表单:
modalWin.showDialog(mainForm);
每次调用showDialog()
方法时,如果您的程序有另一个应该在下面的窗体,则最好将其作为所有者传递。如果已经有模态窗口打开时显示模态窗口,则应将第一个模态窗口作为所有者。
好的,只是为了完成它:
这是如何将所有者设置为Winform的Winform:
form.ShowDialog(ownerInstance);
以下是如何将所有者设置为 WPF 窗口的 Winform:
MyWpfDialog dialog = new MyWpfDialog();
new System.Windows.Interop.WindowInteropHelper(dialog).Owner = ownerInstance.Handle;
dialog.ShowDialog();
这是如何将Owner设置为Wpf窗口的方法:
.Owner = Window.GetWindow(ownerInstance)