我是 C# 新手,正在现有应用程序中做一些工作。我有一个 DirectX 视口,其中包含我希望能够使用箭头键定位的组件。
Currently I am overriding ProcessCmdKey and catching arrow input and send an OnKeyPress event. This works, but I want to be able to use modifiers(ALT+CTRL+SHIFT). As soon as I am holding a modifier and press an arrow no events are triggered that I am listening to.
有人对我应该去哪里有任何想法或建议吗?
在重写的 ProcessCmdKey 中,如何确定按下了哪个键?
keyData(第二个参数)的值将根据按下的键和任何修改键而变化,因此,例如,按左箭头将返回代码 37,shift-left 将返回 65573,ctrl-left 将返回 131109 和 alt-left 262181。
您可以通过与适当的枚举值进行 AND 运算来提取修饰符和按下的键:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
bool shiftPressed = (keyData & Keys.Shift) != 0;
Keys unmodifiedKey = (keyData & Keys.KeyCode);
// rest of code goes here
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)