25
votes

In my application i detect when a key is pressed and see if the modifier is the shift key but the Keys enumerator has Shift and ShiftKey.

It seems the event is always sending Keys.Shift, but is there a case where the Keys.ShiftKey will be used?

(and the same question applies to Keys.Control and Keys.ControlKey)

Thanks for any input.

2

2 Answers

23
votes

Keys.Shift is a modifier key (used for key combinations) while Keys.ShiftKey is a regular key code just like most others in the Keys enumeration.

8
votes

Keys.ShiftKey refers to the actual shift key while Keys.Shift refers to the shift modification itself. Keys.ShiftKey can be used like the other key codes to check for presses, but you cannot check to see if the Keys.Shift was pressed because it represents a state rather than an object. I hope this makes sense.

See here:

http://msdn.microsoft.com/en-us/library/system.windows.forms.keys.aspx