The two key event argument classes KeyEventArgs
and PreviewKeyDownEventArgs
each have two properties, KeyCode
and KeyData
, wh
KeyCode
is an enumeration that represents all the possible keys on the keyboard. KeyData
is the KeyCode
combined with the modifiers (Ctrl, Alt and/or Shift).
Use KeyCode
when you don't care about the modifiers, KeyData
when you do.
The difference that I have observed is that the value in KeyCode
only holds a Keys
enumeration value for the key that triggered the current firing of the event. KeyData
, on the other hand, will contain a logical OR of the value in KeyCode
with any modifier keys (CTRL, SHIFT, ALT, etc.) that are held at the time.