Difference between Keys.Shift and Keys.ShiftKey
Asked Answered
T

2

26

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.

Tomblin answered 22/6, 2011 at 21:45 Comment(0)
G
25

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.

Greedy answered 22/6, 2011 at 21:49 Comment(4)
Does this mean that Keys.Shift could be triggered from a special mouse or some other peripheral, while Keys.ShiftKey cannot?Lira
That makes alot of sense. Thanks for your help. p.s. is there a reason they could have the same enumerator value for both?Tomblin
@Brian @Ryan If you look at KeyEventArgs, you'll use Keys.Shift to check against KeyEventArgs.Modifiers while you would use Keys.ShiftKey to check against KeyEventArgd.KeyCode. Check out the examples in MSDN.Greedy
You'd also use Keys.Shift when checking against Control.ModifierKeysKnowlton
G
9

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

Githens answered 22/6, 2011 at 21:54 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.