Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > KeyValue в KeyChar


Автор: Fomaa 9.2.2009, 13:57
В классе KeyEventArgs содержится свойство KeyValue, как его правильно перевести в выводимый символ?
Можно так Char.ConvertFromUtf32(e.KeyValue), но многие символы не так выводятся и все буквы в верхнем регистре

Автор: Лен 9.2.2009, 14:18
Будь проще: (char)e.KeyValue вполне подойдёт. Все буквы в верхнем регистре потому, что это просто представление клавиши, а не конкретная буква - анализируй другие поля структуры KeyEventArgs: Shift, Alt и иже с ними. Учти, что языков и раскладок много, и корректно обработать абсолютно все простым кодом в 2-3 строчки не выйдет. Наверняка целевая аудитория твоей программы - жители стран СНГ, максимум - Европы/США, а следовательно, незачем сильно загоняться.

Автор: Fomaa 9.2.2009, 18:52
99% два языка - украинский и русский - и это уже большая проблема. Сам ручками не хочу анализировать. Если нет, то прийдется использовать KeyPress

Автор: Лен 12.2.2009, 10:20
Проверь работу кода и с простым приведением к char, и с конвертом при использовании обеих раскладок, чтобы знать наверняка. Возможно, корректно заработают оба, в странице ASCII-кодов для русской раскладки есть все нужные символы (и для украинской, и для белорусской раскладки). Если "по-нормальному" не захочет, тогда переходи на KeyPress. Кстати, а почему бы сразу его не использовать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)