按键多次按下

时间:2014-10-06 21:07:29

标签: c# keyboard

我需要在 Escape 键上按下不同的命令,例如

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 个答案:

答案 0 :(得分: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;
}

将事件附加到您想要的控件上,并将字段放在顶部。

答案 1 :(得分:0)

这是我能想到的最佳方式。它等待用户输入密钥并对其进行计数 如果它是逃生钥匙。按下任何其他键会打破循环,然后计算按下的次数!

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