Что такое KeyCode для "," (запятая) и "." (Точка) в .NET? - PullRequest
23 голосов
/ 18 января 2012

В моем KeyDown EventHandler мне нужно знать, что такое KeyCode для "," и ".".

Я не могу их найти, поэтому и спрашиваю. Спасибо!

Ответы [ 6 ]

24 голосов
/ 18 января 2012

Ключ и символ - это не одно и то же. Раскладка клавиатуры трансформируется между ними, и это преобразование не тривиально. Возможно, вы делаете не то, когда используете KeyDown. Если вы хотите узнать, какой символ ввел пользователь, вы должны использовать KeyPress, что дает уже переведенный символ.

Например, Keys.Decimal - это ключ на цифровой клавиатуре, который соответствует . в американском макете и , в немецком макете. Keys.Oemcomma и OemPeriod, вероятно, , и . ниже букв. Но на других макетах, которые могут отличаться.

7 голосов
/ 18 января 2012

Oemcomma и OemPeriod выглядят хорошими кандидатами.

Посмотрите на перечисление Keys в MSDN.

2 голосов
/ 18 января 2012

Проверьте десятичное значение, это ваш код ключа.

http://www.asciitable.com/

2 голосов
/ 18 января 2012

Я сделал это:

  1. Создал проект WinForm с одним текстовым полем.
  2. Добавлен обработчик события keydown.
  3. Поставить в нем точку останова
  4. Получил это:

enter image description here

0 голосов
/ 09 декабря 2015

Вы пробовали это "." 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
0 голосов
/ 18 января 2012

Используйте Keys.Oemcomma и Keys.OemPeriod

...