c# - 将 WinForms 窗体设置为 WPF 窗口的所有者

标签 c# .net wpf windows winforms

我有一个围绕 System.Windows.Forms.Form 构建的主应用程序有一个遗留的 System.Windows.Window 用户可以调用它,它被设置为 Topmost。我希望 Window 归主应用程序所有,因此当应用程序最小化时它会最小化。 所以我预期的代码是

TopmostDisplayWindow.Owner = MainAppForm;

但是,没有采用 Form 的 Window.Owner 方法,并且 Window 没有对采用所有者的 Show() 的覆盖。

有没有一种简单的方法可以为 MainAppForm 获取窗口,还是需要更复杂的方法?

最佳答案

您可以使用 WindowInteropHelper并设置它的 Owner 属性:

var window = new YourWPFWindow();
WindowInteropHelper helper = new WindowInteropHelper(window);
helper.Owner = this.Handle;
window.Show();

在您的主窗体/父窗体(Winform 窗体)中使用上述代码。 当您想要显示 WPF 窗口时,请记住添加以下引用:

  1. PresentationCore
  2. PresentationFramework
  3. WindowsBase

关于c# - 将 WinForms 窗体设置为 WPF 窗口的所有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32701680/

相关文章:

c# - WPF 有效地重用 Xaml

c# - 无法调试 ASP.NET 应用程序 - "page cannot be displayed"

c# - 如何将 MultipartMemoryStreamProvider 的文件内容作为字节数组获取?

wpf - 如何防止焦点窃取,但在使用 Alt+Tab 返回我的应用程序时仍能获得焦点?

c# - 具有弯曲斜边的多边形三角形

c# - 薛定谔的物体 : WPF property won't bind/update unless I check its value code-side?

c# - 从 C# 发送带有附件的电子邮件,附件作为 Thunderbird 的第 1.2 部分到达

c# - 是否可以以某种方式创建 Foo<T> 对象的集合,其中 T 被限制为不可空类型?

c# - 带有 List<T> 的 SerializationBinder

c# - 如何从客户端应用程序获取运行 Web 服务的服务器的 SSL 证书? - C#.NET