首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keydown事件-冷却

Keydown事件-冷却
EN

Stack Overflow用户
提问于 2012-02-12 18:38:49
回答 3查看 1.6K关注 0票数 1

我有一个带有keydown事件的项目,但每次按键时,我都会点击该键,如果我停止点击它,它将等待半秒,并快速开始向该键发送垃圾邮件。我需要它在没有冷却的情况下发送垃圾邮件,我该怎么办?

EN

回答 3

Stack Overflow用户

发布于 2012-02-12 18:55:25

这称为键盘重复延迟,它是一个系统范围的属性,可以在控制面板的键盘部分进行设置。或者,您可以通过代码设置它,使用SystemParametersInfo Win32 API函数,设置SPI_SETKEYBOARDDELAY标志。

要从C#调用它,您可能需要定义一个P/Invoke签名,但幸运的是,PInvoke.net上的某个人已经为我们提供了done this

不要忘记您正在设置一个系统范围的设置!这可能需要管理员权限,而且在任何情况下,您都应该表现得很好,并在完成后将其恢复为原始设置。

票数 2
EN

Stack Overflow用户

发布于 2012-02-12 19:06:11

而不是更改系统范围的设置,仍然有250ms的延迟,您可以观看同一个键的keydown和keyup事件(不要忘记,用户可以一次按多个键,然后以不同的顺序释放它们)。在keydown上以所需的频率启动计时器,并在keyup上停止计时器,并将之前的keydown处理程序设置为计时器处理程序。

票数 2
EN

Stack Overflow用户

发布于 2012-02-12 19:08:44

尝试使用反应式扩展,并使用与时间相关的运算符之一,如Sample或Interval,以实现此处所需的功能。

http://msdn.microsoft.com/en-us/data/gg577609

作为示例(仅作为指南,键入时不带VS)

代码语言:javascript
复制
  Observable.FromEventPattern<KeyPressEventArgs>(this, "KeyPress").Sample(500).....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9248143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档