1. 程式人生 > >Windows 窗體和 WPF 互操作性輸入

Windows 窗體和 WPF 互操作性輸入

事件:為了美化窗體在原來的winform程式基礎上直接加了個WPF  窗體,程式碼如下:

FrmModel frmmodel = new FrmModel();
frmmodel.Show();

 問題來了,窗體上的TextBox不接受鍵盤的任何輸入,問題出在哪裡?

網上用的說是搜狗輸入方的問題,研究半天的發現的輸入法在全形的時候可以輸入,但是那是全形..

 後來無意間發現

frmmodel.ShowDialog()

可以接受鍵盤的輸入,那.ShowDialog()與Show()有什麼區別呢/

如果在一個Windows應用程式中非模態的顯示一個WPF的視窗,必須使用的一個靜態的方法,需要新增WindowsFormsIntegration.dll

System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop()

當使用這個方法,ElementHost類為Windows窗體 新增一個訊息過濾器,當鍵盤有輸入的時候這個訊息過濾器就會攔截髮送給WPF控制元件,否則接受不到任何訊息。
 FrmModel frmmodel = new FrmModel();
 System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(frmmodel);
 frmmodel.Show();