问题
I have question about the KeyEventArgs
's KeyCode
and KeyData
and KeyValue
.
KeyCode
and Keydata
are Keys type, but I don't know what the difference between them is. For KeyValue
, I don't know what it is -- it has an int
type, does it return the char
value of the pressed key?
I don't have much experience with Key events; any explanation of how they function and how to use them would be greatly appreciated.
回答1:
KeyCode
contains data for the key that produced the KeyUp
or KeyDown
event. KeyData
contains the combination of that key together with CTRL, SHIFT or ALT if any of those were pressed.
Example:
- Press (and hold) CTRL.
KeyDown
will be raised,KeyCode
will beKeys.ControlKey
,KeyData
will beKeys.ControlKey | Keys.Control
. - While still holding CTRL pressed, press SHIFT.
KeyDown
will be raised,KeyCode
will beKeys.ShiftKey
andKeyData
will beKeys.ShifKey | Keys.Shift | Keys.Control
.
Note that KeyData
and KeyCode
can contain any value in the Keys enumeration (such as Keys.A
, Keys.NumPad4
or Keys.Up
). Note that when one of the modifier keys are pressed, it is represented by two values in KeyData
(one for they key and one for the modifier value). The modifiers are also available through the Modifiers property.
KeyValue
will return a numerical value representing the key, essentially an integer representing the value found in KeyCode
.
来源:https://stackoverflow.com/questions/7078125/keyeventargs-keydata-keyeventargs-keycode-and-keyeventargs-keyvalue