在Windows窗体应用程序中,我尝试使用Form的KeyDown事件按下热键时执行某个功能。问题是,当我按住热键时,事件不断发生。C#Windows窗体KeyDown事件连续触发
我只是想在第一次执行某个功能时按下按钮,而另一个功能是当我释放它时。
这里是我用来实现这一操作的代码:
bool isPressed_Num7 = false;
bool isPressed_Num9 = false;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.NumPad7 && !isPressed_Num7)
{
isPressed_Num7 = true;
Console.WriteLine("Keydown 7");
}
if (e.KeyData == Keys.NumPad9 && isPressed_Num9)
{
isPressed_Num9 = true;
Console.WriteLine("Keydown 9");
}
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.NumPad7)
{
isPressed_Num7 = false;
Console.WriteLine("Keyup 7");
}
if (e.KeyData == Keys.NumPad9)
{
isPressed_Num9 = false;
Console.WriteLine("Keyup 9");
}
}
我将使用一堆热键。所以我问的是有更好的方法来完成我想要做的事情吗?
【如何不允许在一个按键收到多个keystokes?](http://stackoverflow.com/questions/2490771/how-not-to-allow-multiple-keystokes-received-at-one -key-press) –
如果我们只知道你在做什么。 –
我*想*他想问的是:如何处理每个必须在事件处理程序中设置为true和false的键的变量。 – aquinas