向上,向下,向左和向右箭头键不会触发KeyDown事件我正在构建一个应用程序,其中所有键输入必须由Windows本身处理。我为每个控件设置了tabstop为false,除了一个面板之外,女巫可以抓住焦点(但我不知道它是否有效)。我将KeyPreview设置为true,我正在处理此窗体上的KeyDown事件。我的问题是,有时箭头键不再响应:当我只按箭头键时,不会触发keydown事件。如果我按下带有控件修饰符的箭头键,则会触发keydown事件。你知道我的箭头键突然停止发射事件的原因吗?
3 回答
Qyouu
TA贡献1786条经验 获得超11个赞
protected override bool IsInputKey(Keys keyData) { switch (keyData) { case Keys.Right: case Keys.Left: case Keys.Up: case Keys.Down: return true; case Keys.Shift | Keys.Right: case Keys.Shift | Keys.Left: case Keys.Shift | Keys.Up: case Keys.Shift | Keys.Down: return true; } return base.IsInputKey(keyData); } protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); switch (e.KeyCode) { case Keys.Left: case Keys.Right: case Keys.Up: case Keys.Down: if (e.Shift) { } else { } break; } }
湖上湖
TA贡献2003条经验 获得超2个赞
(我原来的答案):
从控件类派生,您可以覆盖ProcessCmdKey方法。Microsoft选择从KeyDown事件中省略这些键,因为它们影响多个控件并移动焦点,但这使得应用程序很难以任何其他方式对这些键做出反应。
- 3 回答
- 0 关注
- 284 浏览
添加回答
举报
0/150
提交
取消