【问题标题】:How to add a WPF window to a WinForms App如何将 WPF 窗口添加到 WinForms 应用程序
【发布时间】:2011-03-09 17:45:59
【问题描述】:

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

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

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

那么,如何实现呢?

编辑:感谢 pst 我找到了答案。这是sn-p:

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

【问题讨论】:

    标签: wpf winforms winforms-interop


    【解决方案1】:

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

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

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

    如果你使用正确的关键字,会有很多关于这个主题的谷歌搜索结果。

    【讨论】:

    • WindowInteropHelper 工作正常!看来我没有使用正确的关键字,我整天都在寻找它。再次感谢!
    猜你喜欢
    • 2011-04-09
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多