我想知道是否有人可以帮助我解决这个相当令人困惑的情况。我有一个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表格?
提前致谢。
答案 0 :(得分:4)
WindowsInteropHelper
的使用允许您使用Winforms-form包装托管的WPF表单并将其父设置为Winforms控件,这可以防止WPF表单消失(如dowhilefor和Hans所指出的那样)顺便)
E.g:
// Use the interop helper for the specified wpf window hosted by the win32 owner
WindowInteropHelper wih = new WindowInteropHelper(wpfForm);
wih.Owner = this.someWin32FormsControl.Handle;
答案 1 :(得分:1)
这与Winforms或WPF无关,这是Windows运行的方式。我认为你唯一的解决方案是连接你的模态;即截取Winforms表单上的Activated
事件,如果您的WPF工具窗口可见,请将该窗口向前移动并使其聚焦。