.NET中的KeyDown和KeyPress事件有什么区别?


当前回答

按下键是按下键而不释放它,按键是一个完整的按下-释放周期。

换句话说,KeyDown + KeyUp = Keypress

其他回答

KeyPress是一个比KeyDown(和KeyUp)更高层次的抽象。KeyDown和KeyUp是与硬件相关的:按键在键盘上的实际动作。KeyPress更多的是“我从键盘上收到一个字符”。

按下键是按下键而不释放它,按键是一个完整的按下-释放周期。

换句话说,KeyDown + KeyUp = Keypress

最简单的解释:

我按住“d”键一秒钟,然后松开。

dddddd

在屏幕上出现第一个d之前,keydown事件发生一次,keypress事件发生6次,keyup事件发生在屏幕上出现最后一个d之后。

KeyPress仅由可打印字符触发,并在KeyDown事件后触发。根据输入延迟设置,可以有多个KeyDown和KeyPress事件,但只有一个KeyUp事件。

KeyDown 键盘按键 按键弹起

从MSDN:

关键事件的发生顺序如下: KeyDown 键盘按键 按键弹起

此外,KeyPress给你一个机会来声明动作为“处理”,以防止它做任何事情。