2016-09-07 2 views
-2

Я пытаюсь разбить пользовательский ввод на событие KeyDown в DataGrid, выяснив, является ли их ввод буквой или числом. Это метод, который я использую до сих пор;IsLetter on DataGrid KeyDown Event

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"); 
    } 
} 

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

+0

Вы должны войти 'Convert.ToChar (e.Key))' –

ответ

1

Существует разница между key.toChar() и char, которую вы ожидаете быть там. Вы можете прочитать о преобразовании здесь, но это не просто один:

how to capture the '#' character on different locale keyboards in WPF/C#?

+0

@ томас-Айюб добавил, как использовать его в текущем контексте –

+0

Почему бы один повторно реализует 'char.IsLetter()' и 'char.IsDigit()', когда он уже существует и работает хорошо? –

+0

Вы правы, в этом вопросе есть еще одна проблема: –