В чем разница между свойствами KeyCode и KeyData в объектах аргументов ключевого события .NET WinForms? - PullRequest
40 голосов
/ 25 ноября 2008

Каждый из двух классов аргументов ключевого события KeyEventArgs и PreviewKeyDownEventArgs каждый имеет два свойства, KeyCode и KeyData, которые оба имеют тип перечисления Keys.

В чем разница между этими двумя свойствами? Значения в них когда-либо отличаются друг от друга? Если да, то когда и почему?

Ответы [ 2 ]

51 голосов
/ 25 ноября 2008

KeyCode - это перечисление, представляющее все возможные клавиши на клавиатуре. KeyData - это KeyCode в сочетании с модификаторами (Ctrl, Alt и / или Shift).

Используйте KeyCode, когда вам не нужны модификаторы, KeyData, когда вам это безразлично.

8 голосов
/ 25 ноября 2008

Отличие, которое я заметил, состоит в том, что значение в KeyCode содержит только значение перечисления Keys для клавиши, которая запустила текущее срабатывание события. KeyData, с другой стороны, будет содержать логическое ИЛИ значения в KeyCode с любыми клавишами-модификаторами (CTRL, SHIFT, ALT и т. Д.), Которые удерживаются в это время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...