在某些特殊情况下,我们会需要用到 Winform.owner = WpfWindows 的形式。
通常情况下 ,在wpf 里调用winform窗体,我们会这样写:
Form frm = new Form;
...省去部分窗体设置。
frm.showDialog();
但是这样的话,一个软件会有两个甚至多个窗体(在任务栏,任务视图里)
为保证整个软件在任务栏和任务视图只显示一个窗体,我们可以做以下两步操作:
- 设置 winform 窗体属性ShowInTaskbar = false;
- 在wpf里调用winform时加上这一段代码:
Form frm = new Form;
...省去部分窗体设置。
IntPtr handle = (new System.Windows.Interop.WindowInteropHelper(this)).Handle;
System.Windows.Forms.NativeWindow ownerWindow = new System.Windows.Forms.NativeWindow();
ownerWindow.AssignHandle(handle);
frm.showDialog(ownerWindow);
(即:将WPF 窗体设置为Winform窗体Owner)
参考资料:指定System.Windows.Forms.Form的Owner为System.Windows.Window