Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从WinForms窗体显示WPF窗口是否绝对安全?_C#_Wpf_Winforms_.net 3.5_Interop - Fatal编程技术网

C# 从WinForms窗体显示WPF窗口是否绝对安全?

C# 从WinForms窗体显示WPF窗口是否绝对安全?,c#,wpf,winforms,.net-3.5,interop,C#,Wpf,Winforms,.net 3.5,Interop,我想从windows窗体应用程序(.NET 3.5)显示WPF窗口 在示例项目中,此代码似乎可以正常工作: public partial class WinFormsForm1 : Form { public WinFormsForm1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { WpfWindow1 w = new W

我想从windows窗体应用程序(.NET 3.5)显示WPF窗口

在示例项目中,此代码似乎可以正常工作:

public partial class WinFormsForm1 : Form
{
    public WinFormsForm1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      WpfWindow1 w = new WpfWindow1();
      w.Show();
    }
}
该表单作为普通Winforms表单从
Main()
启动:

Application.Run(new WinFormsForm1());

在我看来,这太容易了,不可能是真的。这有什么缺点吗?这样做安全吗?

其实很简单。我想不出这样做有什么坏处。

它有一个严重的缺点:无模式的WPF窗口会

在显示WPF窗口之前,需要添加
enableModelesKeyBoardInTerop
方法调用:

  WpfWindow1 w = new WpfWindow1();
  System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(w);
  w.Show();
ElementHost

进一步阅读:

底线:它是。 我们有一个结合了WPF和winforms的非常繁重的应用程序:windows、用户控件、模态对话框,你可以说。。。而且它在医疗市场上起作用。 我们已经进入了一些黑暗的角落,一个是臭名昭著的EnableModelsKeyBoardInterop,另一个是让WPF窗口成为Winforms窗口的子窗口,您可以阅读它