c# - .NET 中的键盘事件

标签 c# vb.net forms keyboard

释放按键时会触发按键事件。这适用于 a、b 等普通键。但是,按住箭头键或转义键会产生不同的结果。 它不是在释放按键时触发按键向上事件,而是在按键按下事件后立即触发。因此,按住箭头键相当于快速按下并释放该键多次。 有什么解释和解决办法来确定 key 何时实际释放?

最佳答案

在释放按键之前,KeyUp 事件实际上不会被触发(对于所有键,不仅仅是箭头键等),只有许多重复的 KeyDown 事件。至少,从一些测试代码来看我是这样的。

我的解决方法是在使用检测到 KeyDown 事件后禁用 KeyDown 处理程序

RemoveHandler Me.KeyDown, AddressOf Form1_KeyDown

然后在触发 KeyUP 事件时重新启用。

AddHandler Me.KeyDown, AddressOf Form1_KeyDown

当然,如果您想处理同时按下的多个按键,那么这是行不通的。您必须存储相关 key 是否已关闭并忽略相应的 KeyDown 事件。

关于c# - .NET 中的键盘事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/531618/

相关文章:

c# - 在 ASP.NET 调试期间使用 Activator.CreateInstanceFrom 时类型不匹配

c# - 何时调用属性?

C# String.Format() 返回错误字符

vb.net - 为什么输入框让我输入两次?

javascript - Chrome 中的表单样式

forms - 发送电子邮件字段未在营销人员的 Sitecore Web 表单中呈现

javascript - 如何使用JS、Node、Mongo、Express提交表单?

c# - 在 C# 中管理同一字符串中 2 个单词之间的空格

asp.net - 如何在弹出窗口中打开aspx网页

.net - 如何判断一个对象是否是一个结构体?没有“GetType(Object).IsStructure 函数