Что такое KeyCode для "," (запятая) и "." (Точка) в .NET?
В моем KeyDown
EventHandler
мне нужно знать, что такое KeyCode
для "," и ".".
Я не могу найти их, поэтому я спрашиваю. Спасибо!
Ответы
Ответ 1
Ключ и символ - это не одно и то же. Макет клавиатуры преобразуется между ними, и это преобразование не является тривиальным. Вероятно, вы делаете неправильную вещь при использовании KeyDown
. Если вы хотите узнать, какой символ введен пользователем, вы должны использовать KeyPress
, который дает уже переведенный символ.
Например, Keys.Decimal
- это ключ на клавиатуре, который соответствует .
на макете США, и ,
на немецком макете. Keys.Oemcomma
и OemPeriod
, скорее всего, ,
и .
поддерживают буквы. Но на других макетах, которые могут быть разными.
Ответ 2
Oemcomma
и OemPeriod
выглядят как хорошие кандидаты.
Посмотрите Keys
перечисление в MSDN.
Ответ 3
Обратите внимание на десятичное значение, указанное в key code.
http://www.asciitable.com/
Ответ 4
Я сделал это:
- Создал проект WinForm с одним текстовым полем.
- Добавлен обработчик события keydown.
- Поместите в него точку останова
- Получил следующее:
![enter image description here]()
Ответ 5
Используйте Keys.Oemcomma
и Keys.OemPeriod
Ответ 6
Вы пробовали это "." c
Поплавковый фильтр:
Select Case e.KeyChar
Case "0"c To "9"c
Case "."c
If .Text.Contains(".") Then
e.Handled = True
End If
Case ChrW(Keys.Delete), ChrW(Keys.Back)
Case Else
e.Handled = True
End Select