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

.NET WinForms关键事件参数对象上的KeyCode和KeyData属性之间有什么区别?,.net,winforms,events,event-handling,.net,Winforms,Events,Event Handling,两个键事件参数类KeyEventArgs和PreviewKeyDownEventArgs都有两个属性,KeyCode和KeyData,它们都是枚举类型的键 这两个属性之间有什么区别?它们中的值是否存在差异?如果是,何时以及为什么?KeyCode是一个枚举,表示键盘上所有可能的键KeyData是与修饰符(Ctrl、Alt和/或Shift)组合的KeyCode 当您不关心修饰符时使用KeyCode,当您关心修饰符时使用KeyData 我观察到的区别是,KeyCode中的值仅包含触发当前事件触发的键的

两个键事件参数类
KeyEventArgs
PreviewKeyDownEventArgs
都有两个属性,
KeyCode
KeyData
,它们都是枚举类型的键


这两个属性之间有什么区别?它们中的值是否存在差异?如果是,何时以及为什么?

KeyCode
是一个枚举,表示键盘上所有可能的键
KeyData
是与修饰符(Ctrl、Alt和/或Shift)组合的
KeyCode


当您不关心修饰符时使用
KeyCode
,当您关心修饰符时使用
KeyData

我观察到的区别是,
KeyCode
中的值仅包含触发当前事件触发的键的
Keys
枚举值<另一方面,code>KeyData将包含
KeyCode
中值的逻辑OR,并带有当时保持的任何修改键(CTRL、SHIFT、ALT等)