c# - 从 WinForms 窗体显示 WPF 窗口绝对安全吗?

标签 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 WpfWindow1();
      w.Show();
    }
}

窗体作为普通 Winforms 窗体从 Main() 开始:

Application.Run(new WinFormsForm1());

在我看来,这太容易令人难以置信。这有什么缺点吗?这样做安全吗?

最佳答案

它有一个严重的缺点:无模式 WPF 窗口会 not get keyboard input .

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

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

元素主机 resides in WindowsFormsIntegration.dll .

进一步阅读:http://msdn.microsoft.com/en-us/library/aa348549.aspx

关于c# - 从 WinForms 窗体显示 WPF 窗口绝对安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3870498/

相关文章:

c# - 从物理文件实例化 IFormFile

c# - 来自 Visual Studio 2013 RC 的 "Cannot find or open the PDB file"

c# - 代码格式样式 - 哪一种更可取

c# - 将列表分配给列表框时,未将对象引用设置为对象实例异常

c# - 进度条值只是闪烁并消失

c# - 从 exe 的父目录探测程序集

c# - 来自不同线程的 WPF 和 NotifyPropertyChanged

c# - ItemsControl 拖放

WPF 4 多点触控拖放

c# - WPF - 如何停止 TabControl 在 MouseUp 事件中更改索引?