如何将WPF窗口添加到WinForms应用程序

时间:2010-06-29 16:44:46

标签: wpf winforms winforms-interop

我正在创建一个HUD窗口,用于检查WinForms应用程序中的商业实体。

我想要一个完全不同的窗口样式(最小化内容区域并仅显示TitleBar,没有系统按钮等),所以我为此创建了一个WPF应用程序。

问题是我希望这个窗口在我的WinForms应用程序中“存活”。我不能只将WPF添加为OwnedForm或将主窗体设置为WPF窗口的所有者。

那么,如何实现这一目标呢?

编辑:感谢pst,我找到了答案。这是片段:

System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(_inspector);
WindowInteropHelper inspectorHelper = new WindowInteropHelper(_inspector);
inspectorHelper.Owner = this.Handle;
_inspector.Show();

1 个答案:

答案 0 :(得分:6)

WPF窗口有一个Win32窗口句柄/上下文。

WindowInteropHelper。你可以使用Win32(或者可能有WinForms支持吗?)来设置WPF窗口的所有者窗口。请注意,在“源初始化”(?)事件之前句柄不存在。

然而,只使用WinForms,您可以根据需要自定义标题栏(您可以通过Win32覆盖绘图本身,我认为您将失去所有控制框而不会走这么远)。

如果您使用正确的关键字,则有很多关于此主题的Google搜索结果。