2014-10-06 2 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

NB: У меня нет VS здесь, поэтому это не точный код, позвольте мне через несколько минут проверить MSDN. –

+0

Я думаю, что сейчас должно быть ОК –

+0

Хм, нет истекшего варианта под таймером.:/ – ShadyOverflow

0

Это лучший способ, о котором я могу думать. Он ждет, когда пользователь вводит ключ, и считает его , если его ключ-побег. Любая другая нажатая клавиша прерывает цикл, тогда вы считаете время нажатым!

 ConsoleKeyInfo key; 
     int timesPressed = 0; 
     while(true) { 
      key = Console.ReadKey(); 
      if (!key.Equals(ConsoleKey.Escape) || timesPressed >= 3) { 
       break; 
      } 
      timesPressed++; 
     } 
Смежные вопросы