问题:
箭头键有时无法触发 KeyDown 事件,除非使用 Control 等修饰键按下。
解决方案:
可以通过使用 PreviewKeyDown
事件并将箭头键按下时的 e.IsInputKey
显式设置为 true
来纠正此行为。 代码如下:
<code class="language-csharp">private void Form_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right) { e.IsInputKey = true; } }</code>
此代码片段直接解决了根本原因:标准 Control 类将箭头键处理为导航键。通过将 e.IsInputKey
设置为 true
,您可以强制针对箭头键输入触发 KeyDown 事件,而不管修饰键如何。
重要注意事项:
TabStop
属性无法解决此问题。ProcessCmdKey
;它是为菜单快捷方式处理而设计的,而不是一般的按键输入。以上是为什么我的箭头键没有触发 KeyDown 事件?的详细内容。更多信息请关注PHP中文网其他相关文章!