2013-03-26 57 views
1

我需要捕獲在特定時間段內按下的擊鍵,例如說300毫秒。所以當我按'a',並在300毫秒內我按'b',那麼我需要字符串「ab」。但是如果在按下'b'300ms後按'c',那麼我想要「c」。如何在特定時間段內捕獲DataGridView按鍵事件中按下的按鍵?

我需要這個快速跳轉到以快速按鍵開始的DataGridView的單元格。

+3

[你有什麼嘗試?](http://whathaveyoutried.com) – Blachshma

+0

我在谷歌搜索,但無法得到正確的結果。我知道如何用單按鍵做到這一點,但我不知道如何捕捉快速按鍵。 – Prince23

+1

我認爲你可以使用'KeyDown event'來捕獲這一切,並且由於你正在談論300ms,你將需要一個計時器以及 – MethodMan

回答

2

我不完全確定我理解你的問題,但我相信你想要一種方法來執行一個代碼塊,如果兩個鍵被按下,或者另一個代碼塊,如果三個鍵被按下。另外,您希望每個按鍵都在300ms之內。如果我的理解,那麼這段代碼應該做你想要什麼:

private System.Diagnostics.Stopwatch Watch = new System.Diagnostics.Stopwatch(); 
private string _KeysPressed; 
public string KeysPressed 
{ 
    get { return _KeysPressed; } 
    set 
    { 
     Watch.Stop(); 
     if (Watch.ElapsedMilliseconds < 300) 
      _KeysPressed += value; 
     else 
      _KeysPressed = value; 
     Watch.Reset(); 
     Watch.Start(); 
    } 
}   
private void KeyUpEvent(object sender, KeyEventArgs e) 
{ 
    KeysPressed = e.KeyCode.ToString(); 
    if (KeysPressed == "AB") 
     lblEventMessage.Text = "You've pressed A B"; 
    else if (KeysPressed == "ABC") 
     lblEventMessage.Text = "You've pressed A B C"; 
    else 
     lblEventMessage.Text = "C-C-C-COMBOBREAKER!!!"; 
} 

此代碼假定一個標籤,lblEventMessage,有所爲觸發KeyUp事件(我有一個文本框去)。

+0

非常有幫助。謝謝。 –

相關問題