【发布时间】:2012-06-14 12:01:15
【问题描述】:
我想知道是否有人可以帮助我解决这个相当莫名其妙的情况。我有一个 WPF 表单myForm,我在 WinForm 应用程序中以模态方式显示它(不使用 ElementHost)。如果我使用默认的 WindowStyle 并且它显示在任务栏中,一切正常。但是现在我不希望表单显示在任务栏中或包含最小化按钮,因此我做了以下操作:
MyForm myForm = new MyForm();
myForm.ShowInTaskbar = false;
myForm.WindowStyle = System.Windows.WindowStyle.ToolWindow;
myForm.WindowStartupLocation =System.Windows.WindowStartupLocation.CenterOwner;
myForm.ShowDialog();
现在,wpf 表单以模态方式显示,并且没有最小化按钮。如果我现在在任务栏中选择“父”winform 应用程序,wpf 表单就会消失,并且似乎没有任何方法可以返回它!我读过this,它相似但不一样(纯WPF应用程序),所以我可以理解为什么主应用程序没有出现在ALT+TAB菜单中,但是谁能告诉我如何返回wpf表单?
提前致谢。
【问题讨论】:
-
澄清一下,问题是如果 WPF ToolWindow 被推到主应用程序或其他应用程序后面,您根本无法将窗口向前推进吗?
-
您是否尝试过设置工具窗口的所有者?如果您混合使用 winforms 和 wpf,这甚至应该可以工作。您可以使用 WindowsInteropHelper 或直接使用 winapi 调用 SetParent。
-
@CodingGorilla 是的,没错。
-
所有者是问题。一个很难,你没有一个窗口来成为所有者。您必须调用 SetWindowLongPtr() 来设置所有者。
标签: c# .net wpf windows winforms