使用Keys.Shift和Keys.ShiftKey之间的混淆

时间:2011-06-28 16:36:45

标签: c# winforms

C#WinForms: 我有一些像这样的代码:

if (GetAsyncKeyState((int)Keys.ShiftKey) != 0)
{
    nShift = (nShift | 1);
}

如果我将if更改为Keys.Shift,那么它正常工作,就像向前跳转一样,但如果那时它会破坏tabbing-backward,这是keyborad上的TAB + SHIFT键。但是我希望前后两个标签都能正常工作。如何更改此设置才能正常工作?

2 个答案:

答案 0 :(得分:3)

ShiftKey值确定是否由于按下Shift键/向上/等等而引发了事件。 Shift值是修饰符,可以与其他键组合使用。

因此,如果值为A + Shift,则表示用户在按住Shift键的同时按下了A键。

您没有提供足够的信息来说明为什么标签会受到影响,但我怀疑您没有正确处理控制和移位修改器的情况(以及Tab键)。或者您正在处理事件并阻止正常的标签发生。

答案 1 :(得分:0)

.net difference between right shift and left shift keys就是答案。我们应该说Keys.LShiftKey和Keys.RShiftKey