2012-02-12 77 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).....