2016-05-08 3 views
0

Я разрабатываю приложение для правительства, где пользователь вводит текст на английском языке, и переведенный текст будет отображаться в другом текстовом поле.Как установить режим индикации 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, когда я установил Disable с помощью панели свойств в Visual Studio во время моего тестирования режима Form1 [Design])

Edit: выше был протестирован для работы на Windows 10 с английским как мой системный язык по умолчанию.

Интересное наблюдение: Когда я тестировал с использованием ImeMode.Off, а не ImeMode.Disable (на основе: https://stackoverflow.com/a/2209587/7270462), используя ImeMode.Off не кажутся достаточными для предотвращения TextBox от принятия ввода текста IME для другого языка (протестировано китайский и японский входной и они по крайней мере все еще могут быть введены в текстовое поле). Также испытал настройку ImeMode.NoControl изначально из любопытства, но это также не достигло той же цели, что и ImeMode.Disable.