代码之家  ›  专栏  ›  技术社区  ›  Marek

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

  •  11
  • Marek  · 技术社区  · 14 年前

    我想从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();
        }
    }
    

    表单从开始 Main() 作为普通的WinForms窗体:

    Application.Run(new WinFormsForm1());
    

    在我看来,这太容易成为事实。这方面有什么缺点吗?这样做安全吗?

    3 回复  |  直到 14 年前
        1
  •  15
  •   Marek    14 年前

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

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

      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

        2
  •  7
  •   Amittai Shapira    14 年前

    底线:是的。 我们有大量的应用程序将WPF和WinForms结合在一起:Windows、用户控件、模式对话框,您可以命名它…它在医疗市场工作。 我们已经进入了一些黑暗的角落,一个是臭名昭著的EnableModelessKeyboardInterop,另一个是让WPF窗口成为WinForms窗口的子窗口,您可以阅读 Here

        3
  •  -3
  •   bitbonk    14 年前

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

    推荐文章