KeyEventArgs.KeyData, KeyEventArgs.KeyCode и KeyEventArgs.KeyValue - PullRequest
11 голосов
/ 16 августа 2011

У меня вопрос по поводу KeyEventArgs 's KeyCode и KeyData и KeyValue.KeyCode и Keydata - это ключи типа, но я не знаю, в чем разница между ними.Для KeyValue я не знаю, что это такое - у него тип int, он возвращает значение char нажатой клавиши?

У меня нет большого опыта работы сКлючевые события;Любое объяснение того, как они функционируют и как их использовать, будет с благодарностью.

1 Ответ

19 голосов
/ 16 августа 2011

KeyCode содержит данные для ключа, который вызвал событие KeyUp или KeyDown. KeyData содержит комбинацию этой клавиши вместе с CTRL, SHIFT или ALT, если какая-либо из них была нажата.

Пример:

  • Нажмите (и удерживайте) CTRL. KeyDown будет повышено, KeyCode будет Keys.ControlKey, KeyData будет Keys.ControlKey | Keys.Control.
  • Удерживая нажатой клавишу CTRL, нажмите SHIFT. KeyDown будет повышено, KeyCode будет Keys.ShiftKey и KeyData будет Keys.ShifKey | Keys.Shift | Keys.Control.

Обратите внимание, что KeyData и KeyCode могут содержать любое значение в перечислении Keys (например, Keys.A, Keys.NumPad4 или Keys.Up). Обратите внимание, что когда нажата одна из клавиш-модификаторов, она представляется двумя значениями в KeyData (одно для клавиши и одно для значения модификатора). Модификаторы также доступны через свойство Modifiers.

KeyValue вернет числовое значение, представляющее ключ, по существу, целое число, представляющее значение, найденное в KeyCode.

...