查找是否已触发KeyUp或KeyDown事件

时间:2016-04-02 00:19:40

标签: c# winforms

我有KeyUpKeyDown个事件的相同代码块;唯一的区别在于一行代码,相应地将button.BackColor更改为Color.GrayColor.White。我想将这段代码放在一个单独的方法中以避免重复,并且两个事件的不同单行应如下所示:

button.BackColor = (KeyUp was fired) ? Color.Gray : Color.White;

该方法接受KeyEventArgs e作为参数,但我无法弄清楚如何确定eKeyUp还是KeyDown。在C#(winforms)中,JavaScript中是否存在模拟event.type属性?否则,还有其他方法吗?感谢

1 个答案:

答案 0 :(得分:2)

System.Windows.Forms.KeyEventArgs无法确定事件是否因KeyUpKeyDown事件而被引发。你最好的选择是采用不同的处理方法,这两种方法都称为通用方法,即

private void OnKeyDown(object sender, KeyEventArgs eventArgs)
{
    HandleKeyState(false, eventArgs);
}

private void OnKeyUp(object sender, KeyEventArgs eventArgs)
{
    HandleKeyState(true, eventArgs);
}

private void HandleKeyState(bool isKeyUp, KeyEventArgs eventArgs)
{
    button.BackColor = isKeyUp ? Color.Gray : Color.White;
}