2016-05-08 40 views
0

我正在爲政府開發應用程序,用戶將用英文輸入文本,翻譯後的文本將出現在另一個文本框中。如何將Indic IME模式設置爲特定的TextBox?

要翻譯我正在使用的文本Microsoft Indic Language Input Tool

因此,當我在一個文本框(英文)中輸入文本時,我希望文本應該被翻譯(印地語)到另一個文本框。

但是,問題是該工具正在文本框上創建圖層,所以我沒有得到任何KeyPress/KeyDown/TextChange事件,直到沒有完成單詞並且IME模式被設置爲所有輸入控件而不是特定的單一一。

是否有可能只爲一個文本框設置IME模式?

回答

1

假設你有兩個TextBox控件,那麼只有英文TextBox只需要它的ImeMode屬性設置爲Disable

E.g.

 this.textBox2.ImeMode = System.Windows.Forms.ImeMode.Disable; 

(這是生成到Form1.Designer.cs當我在我的Form1 [Design]模式測試期間設置通過在Visual Studio屬性窗格中Disable

編輯: 以上測試在Windows 10運行英語作爲我的默認系統語言。當我測試使用ImeMode.Off而非ImeMode.Disable(基於:https://stackoverflow.com/a/2209587/7270462):

有趣的觀察,使用ImeMode.Off似乎不足以阻止文本框從接受IME文本輸入不同語言(測試中國和日本的輸入和這些至少仍然可以輸入到文本框中)。最初出於好奇而測試了設置ImeMode.NoControl,但是這也沒有達到與ImeMode.Disable一樣的目標。

相關問題