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


当前回答

KEYUP只会在按键释放时被捕获一次,而不管按键被按住多长时间,所以如果您只想捕获这样的按键一次,KEYUP是适合捕获的事件。

其他回答

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

从MSDN:

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

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

KEYUP只会在按键释放时被捕获一次,而不管按键被按住多长时间,所以如果您只想捕获这样的按键一次,KEYUP是适合捕获的事件。

非字符键不会引发KeyPress事件;然而,非字符键会引发KeyDown和KeyUp事件。

https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.control.keypress

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

换句话说,KeyDown + KeyUp = Keypress