it-roy-ru.com

Что такое KeyCode для "," (запятая) и "." (Точка) в .NET?

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

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

23
Bosak

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

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

24
CodesInChaos

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

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

7
Oded

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

http://www.asciitable.com/

2
Shaun07776

Я сделал это:

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

enter image description here

2
jgauffin

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

0
D Stanley

Вы пробовали это "." 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
Champu