| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка 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. Кстати, а почему бы сразу его не использовать? |