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

通過WinForm控制元件建立的WPF控制元件無法輸入的問題

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

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

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

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

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

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