我有KeyUp
和KeyDown
个事件的相同代码块;唯一的区别在于一行代码,相应地将button.BackColor
更改为Color.Gray
或Color.White
。我想将这段代码放在一个单独的方法中以避免重复,并且两个事件的不同单行应如下所示:
button.BackColor = (KeyUp was fired) ? Color.Gray : Color.White;
该方法接受KeyEventArgs e
作为参数,但我无法弄清楚如何确定e
是KeyUp
还是KeyDown
。在C#(winforms)中,JavaScript中是否存在模拟event.type
属性?否则,还有其他方法吗?感谢
答案 0 :(得分:2)
System.Windows.Forms.KeyEventArgs
无法确定事件是否因KeyUp
或KeyDown
事件而被引发。你最好的选择是采用不同的处理方法,这两种方法都称为通用方法,即
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;
}