2012-02-12 58 views
1

我有一个项目与keydown事件,但作为每个按键,我点击的关键,如果我点击它,它将等待半秒钟,并迅速启动垃圾邮件的关键。我需要它没有冷静的垃圾邮件,我能做什么?Keydown事件 - 降温

+1

这是由于Windows是如何工作的。这是一个全球性的设置,而不是你的应用程序应该搞乱的东西。 – 2012-02-12 11:07:58

回答

1

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

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

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

2

而是改变整个系统的设置,仍然有250毫秒的延迟,你可以观看的keydown和相同的密钥KEYUP事件(不要忘记,一个用户可以同时按多个键,并在不同的释放他们订购)。在keydown上以所需的频率启动一个定时器,并在keyup上停止它,并将以前的keydown处理程序设置为定时器处理程序。

0

尝试使用无扩展和使用与时间相关的运营商之一,如样品或间隔达到什么您这里需要。

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

为例(只是作为指导,没有VS键入)

Observable.FromEventPattern<KeyPressEventArgs>(this, "KeyPress").Sample(500).....