DRD94 Ответов: 1

Isletter на элементе управления DataGrid событие keydown


Я пытаюсь разбить пользовательский ввод на событие KeyDown в DataGrid, выяснив, является ли его ввод буквой или цифрой.

Метод, который я использую в данный момент, работает причудливо. Во-первых, IsDigit никогда не происходит и явно не работает. Во-вторых, островок работает, но только на некоторых буквах (W,Z,X, V и Y). Должен быть более всеобъемлющий способ сделать это, поскольку это явно не работает для меня.

Что я уже пробовал:

Это метод, который я использую до сих пор;

private void OnDataGridKeyDown(object sender, KeyEventArgs e)
{
   if (char.IsLetter(Convert.ToChar(e.Key)))
   {
        MessageBox.Show("Letter");
   }
   if (char.IsDigit(Convert.ToChar(e.Key)))
   {
        MessageBox.Show("Number");
   }
}

Richard MacCutchan

Convert.ToChar не работает на ключевых значениях. Вам также необходимо ознакомиться с документацией для KeyEventArgs, который не перечисляет свойство с именем Key.
Спасибо Гриффу за то, что он меня поправил.

OriginalGriff

Версия WPF делает это - и DataGrid является элементом управления WPF.

Richard MacCutchan

Будь ты проклят, Microsoft.

1 Ответов

Рейтинг:
8

OriginalGriff

Преобразовать.ToChar не имеет перегрузки, которая явно принимает ключевое значение, поэтому я не уверен, что именно она произведет. Вряд ли удастся преобразовать ключ.От " А " до "А", ключ.От " Б " до "В" и так далее.
На самом деле, я только что проверил:

System.Windows.Input.Key k = System.Windows.Input.Key.A;
for (int i = 0; i < 26; i++)
    {
    char c = Convert.ToChar(k);
    Console.WriteLine("{0}:{1}", k, c);
    k++;
    }
И это не так:
A:,
B:-
C:.
D:/
E:0
F:1
G:2
H:3
I:4
J:5
K:6
L:7
M:8
N:9
O::
P:;
Q:<
R:=
S:>
T:?
U:@
V:A
W:B
X:C
Y:D
Z:E

То, что вам нужно сделать, это:
Key k = e.Key;
if (k >= Key.A && k <= Key.Z)
    {
    ...
    }
if ((k >= Key.D0 && k <= Key.D9) || (k >= Key.NumPad0 && k <= Key.NumPad9))
    {
    ...
    }


Richard MacCutchan

Иногда мне кажется, что голосовать за тебя-все равно что таскать угли в дом ПИ О'Х. Но я все еще иногда это делаю.

OriginalGriff

:смеяться:
Я знаю, что ты имеешь в виду.

DRD94

Спасибо!

OriginalGriff

Пожалуйста!