Что такое KeyCode для "," (запятая) и "." (Точка) в .NET?
В моем KeyDownEventHandler мне нужно знать, что такое KeyCode для "," и ".".
Я не могу найти их, поэтому я спрашиваю. Спасибо!
Ответ 1
Ключ и символ - это не одно и то же. Макет клавиатуры преобразуется между ними, и это преобразование не является тривиальным. Вероятно, вы делаете неправильную вещь при использовании KeyDown. Если вы хотите узнать, какой символ введен пользователем, вы должны использовать KeyPress, который дает уже переведенный символ.
Например, Keys.Decimal - это ключ на клавиатуре, который соответствует . на макете США, и , на немецком макете. Keys.Oemcomma и OemPeriod, скорее всего, , и . поддерживают буквы. Но на других макетах, которые могут быть разными.
Ответ 2
Oemcomma и OemPeriod выглядят как хорошие кандидаты.
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