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





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