.NET WinForms关键事件参数对象上的KeyCode和KeyData属性有什么区别?

Chr*_*man 44 .net events event-handling winforms

的两个关键事件参数类KeyEventArgsPreviewKeyDownEventArgs各自具有两个属性,KeyCode并且KeyData,这两者都是枚举类型键.

这两个属性有什么区别?它们中的值是否彼此不同?如果是的话,何时以及为何?

gco*_*res 55

KeyCode是一个枚举,表示键盘上所有可能的键. KeyDataKeyCode与改性剂(Ctrl键,Alt键和/或偏移)相结合.

使用KeyCode时,你不关心的改性剂,KeyData当你这样做.


Chr*_*man 8

我观察到的不同之处在于,值KeyCode仅包含Keys触发当前触发事件的键的枚举值. KeyData另一方面,将包含当前保存的KeyCode任何修饰键(CTRL,SHIFT,ALT等)的值的逻辑OR .