Редактировать: Как-то я неправильно прочитал ваш вопрос, включив проверку действительного символа. Вы изменили его? Я добавил описание каждого из них.
- KeyCode является значение Keys перечисление для ключа, вниз
- KeyData такая же, как KeyCode, но в сочетании с любым сочетанием клавиш SHIFT/CTRL/ALT ключи
- KeyValue является просто целочисленное представление KeyCode
Если вы только need t он характер, я, вероятно, рекомендую использовать событие KeyPress и использовать KeyPressEventArgs. KeyChar Недвижимость. Затем вы можете использовать Char.IsLetterOrDigit(), чтобы узнать, является ли он действительным символом.
В качестве альтернативы, вы можете отправить KeyEventArgs.KeyCode символу, а затем использовать Char.IsLetterOrDigit.
Я не согласен ... Вы предполагаете, что пользователь не хочет улавливать какие-либо модификаторы, а его ввод ограничен клавиатурой ASCII. – Cerebrus
IsLetterOrDigit работает только с ascii? – Svish
IsLetterOrDigit использует CharUnicodeInfo.GetUnicodeCategory, если символ не является латинским. –