1. 程式人生 > >通過WinForm控件創建的WPF控件無法輸入的問題

通過WinForm控件創建的WPF控件無法輸入的問題

不能 rop htm 在那 .cn 菜單控件 輸入法 創建 子窗口

原文:通過WinForm控件創建的WPF控件無法輸入的問題

今天把寫的一個WPF程序發布到別的機器上執行,發現一個比較奇怪的問題:在那個機器上用英文輸入法無法輸入數字,非要切換到中文輸入法才行;但在我的機器上卻是好好的。

最開始以為是輸入法的問題,弄了好一陣子後,終於找到了原因:雖然這個程序是個WPF程序,但為了復用之前的部分代碼,使用著一個WinForm的菜單控件,後續的子窗口都是通過這個WinForm菜單創建的。而用WinForm控件創建的WPF控件可能出現無法正確響應鍵盤事件的情況。

找到了原因後,一個常規的解決方法是:將WinForm控件換成WPF控件,如果WinForm控件比較容易替換的話用這種方式是可以一次性的解決問題的。但如果要復用之前的控件,則可以使用如下函數使能WinForm創建的窗口或使用了WinForm創建的控件的窗口。

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

相關文章: 解決Winform中彈出WPF窗體不能在文本框中輸入的問題

通過WinForm控件創建的WPF控件無法輸入的問題