2014-10-06 71 views
1

我需要在逃生做出不同的命令鍵按下,例如在上一個鍵按下的鍵多次

if Escape key is once pressed .. Draw(250,250); 
if Escape key is twice pressed .. Draw(350,350); 
if Escape key is triple pressed .. Draw(450,450); 

我必須有多個不同的命令, 如何使應用怎麼算很多時候一個鍵被按下並使用該信息來運行特定的代碼?

回答

2

您應該創建一個計數器,並在每次按下該鍵時遞增計數器。 如果您在談論雙擊或三擊「點擊」,則還需要設置Timer。 每次計時器結束時,您都重置您的計數器。

唯一剩下的就是根據您的計數器值調用您想要的方法。

int MyKeyCounter = 0; 
Timer CounterResetter = new Timer(1000); 
CounterResetter.Elapsed += ResetCounter; 

void OnKeyPressEvent(object sender, KeyPressEventArgs e) 
{ 
    if (e.Key == Key.Escape) 
    { 
     MyKeyCounter++; 
     if(!CounterResetter.Enabled) 
      CounterResetter.Start(); 
    } 
} 

void ResetCounter(Object source, ElapsedEventArgs e) 
{ 
    if(MyKeyCounter == 1) 
     Method1(); 
    else if (MyKeyCounter == 2) 
     Method2(); 
    ... 

    MyKeyCounter = 0; 
} 

將事件附加到所需的控件上,並將字段放在頂部。

+0

注:我沒有VS這裏所以它不是準確的代碼,讓我幾分鐘來檢查MSDN。 – 2014-10-06 21:17:30

+0

我認爲它應該現在確定 – 2014-10-06 21:26:11

+0

嗯,在計時器下沒有經過的選項..:/ – ShadyOverflow 2014-10-08 20:50:50

0

這是我能想到的最好的方式。它等待用戶輸入一個密鑰,並且如果它的轉義密鑰爲 。按下其他任何按鍵都會中斷循環,然後您按下按下的時間!

 ConsoleKeyInfo key; 
     int timesPressed = 0; 
     while(true) { 
      key = Console.ReadKey(); 
      if (!key.Equals(ConsoleKey.Escape) || timesPressed >= 3) { 
       break; 
      } 
      timesPressed++; 
     } 
相關問題