TaipeiJim Ответов: 5

Мне нужно получить доступ к информации о состоянии языковой панели из C#


Я написал программу ввода данных на языке C#, которая автоматически переключает язык ввода, когда пользователь вкладывает или щелкает различные текстовые поля ввода.

Существует статус для традиционного китайского языка, который может принимать либо китайский, либо английский этот статус переключается путем отправки символа SHIFT с клавиатуры или программы.

Два разных статуса выглядят следующим образом: (обратите внимание на четвертый значок слева)

Китайские Входные:
<img src="http://www.jimkay.tw/files/Chinese.JPG"/>;

Ввод На Английском Языке:
<img src="http://www.jimkay.tw/files/English.JPG">

Проблема в том, что при запуске программы я не могу предсказать, какая из двух настроек появится, когда я впервые установлю ввод на китайский язык (он остается стабильным во время работы программы.)

Если бы я мог найти что-то, что я мог бы прочитать, я бы знал, что такое текущая настройка, но я искал через блок управления во время отладки, и когда я изменяю настройку, я не вижу ничего другого.

Как или к чему я могу получить доступ, чтобы узнать текущее состояние?

5 Ответов

Рейтинг:
2

TaipeiJim

Нынешняя культура остается "ж-ТВ" через все это.

Действительно странно то, что настройки языковой панели не показывают никакой функции, назначенной только клавише SHIFT, но эта клавиша продолжает переключаться между "китайским/английским вводом (Shift)"

Если я наведу курсор мыши на значок, я получу этот намек, и это единственное место, где я его вижу.

Так что должно быть где-то, где Windows 7 хранит эту информацию, но я просто не могу ее найти.


Prerak Patel

Используйте "Добавить комментарий" или "ответить" на комментарий, не добавляйте свои комментарии в качестве ответа.

Prerak Patel

И то, что вы говорите, не совсем понятно, но Alt+Shift-это ярлык по умолчанию для переключения языков ввода.

TaipeiJim

But I'm not switching input languages. The language icon--first icon-- remains CH for Chinese. The third icon--because I have both new phonetic and Cangjie methods installed--can be changed but it remains the same in my situation. The fourth icon is the only one changing in my problem and I get the '(shift) instruction as a tool-tip by hovering over the icon with my mouse pointer. It seems the new phonetic Chinese can take input in either Chinese or English. My wife, who has only new phonetic installed also needs to switch to English for things like URLs and other Internet stuff that isn't in Chinese. Perhaps that's what makes this confusing. The Chinese language setting has to support English too.

PR1ST

Есть ли какие-либо обновления по поводу этой проблемы "китайский/английский режим (Shift)" китайского IME.? Я тоже нахожу решение-вводить только английский текст для учебника.

Рейтинг:
2

TaipeiJim

К сожалению, я должен посоветовать вам не использовать английскую настройку в выборе китайского языка.

будь то шрифт, который используется, или просто что-то жестко закодированное в поддержке китайского языка: английский язык в значительной степени непригоден для использования. Иероглифы, и интервалы между ними довольно широки и довольно странны.

Хуже всего то, что вы не можете искать полученный текст при использовании обычного английского языка. Персонажи совершенно разные.

До сих пор я не решил эту проблему.


Рейтинг:
1

TaipeiJim

Ну, я публикую ответ на свой собственный вопрос, который я нашел, блуждая по справочной системе.

эта инструкция сделала свое дело:

WorkBoPoMoFo.ImeMode = Система.Окна.Формы.Imemode элемента.На;

"WorkBoPoMoFo" - это название текстового блока в моей форме, где пользователь может вводить входные данные.

ImeMode действителен только для японского, традиционного китайского и упрощенного китайского языков. Вот почему никто другой не мог понять, о чем я говорю-они используют другие языки.

Спасибо всем, кто пытался помочь. Я публикую ответ на случай, если кто-то еще столкнется с этой проблемой.


Рейтинг:
1

Prerak Patel

Вы можете использовать InputLanguage.CurrentInputLanguage.LayoutName или InputLanguage.CurrentInputLanguage.Culture.Name чтобы проверить текущее состояние.

InputLanguageChanged событие было бы подспорьем, чтобы поймать изменение.


TaipeiJim

Я смотрел на имя в обеих статусных ситуациях, и они совершенно одинаковы.

"ж-ТВ" - вот в чем проблема.

Prerak Patel

Вы уверены, что использовали CurrentInputLanguage, а не DefaultInputLanguage? Я проверил, нет ли здесь Ди и нас. Это работает.
В любом случае, взгляните на InputLanguageChanged, это может помочь.

OriginalGriff

ОП написал::

InputLanguage.CurrentInputLanguage

Это скопировано и вставлено из моей программы. Да, я уверена.

Prerak Patel

Вы хотели бы проверить InputLanguageChangedEventArgs в InputLanguageChanged.

Рейтинг:
0

Debojyoti Majumder

Если вы хотите получить доступ к данным о региональных настройках, таких как язык, используйте can refer to
Thread.CurrentThread.CurrentCulture объект.


Prerak Patel

Я думаю, что OP запрашивает язык ввода из языковой панели.