在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