В чем разница между свойствами KeyCode и KeyData в объектах аргументов ключевых событий .NET WinForms?
Каждый из двух классов аргументов аргументов KeyEventArgs
и PreviewKeyDownEventArgs
имеет два свойства: KeyCode
и KeyData
, которые являются обеими типами перечислений.
В чем разница между этими двумя свойствами? Знают ли значения в них друг от друга? Если да, то когда и почему?
Ответы
Ответ 1
KeyCode
- это перечисление, представляющее все возможные клавиши на клавиатуре. KeyData
- это KeyCode
в сочетании с модификаторами (Ctrl, Alt и/или Shift).
Используйте KeyCode
, когда вам не нужны модификаторы, KeyData
, когда вы это делаете.
Ответ 2
Разница, которую я наблюдал, заключается в том, что значение в KeyCode
содержит только значение перечисления Keys
для ключа, вызвавшего текущий запуск события. KeyData
, с другой стороны, будет содержать логическое ИЛИ значения в KeyCode
с любыми клавишами-модификаторами (CTRL, SHIFT, ALT и т.д.), которые сохраняются в то время.