Windows 窗體和 WPF 互操作性輸入
阿新 • • 發佈:2019-01-22
事件:為了美化窗體在原來的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();