.NET中的KeyDown和KeyPress事件有什么区别?
当前回答
非字符键不会引发KeyPress事件;然而,非字符键会引发KeyDown和KeyUp事件。
https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.control.keypress
其他回答
从MSDN:
关键事件的发生顺序如下: KeyDown 键盘按键 按键弹起
此外,KeyPress给你一个机会来声明动作为“处理”,以防止它做任何事情。
非字符键不会引发KeyPress事件;然而,非字符键会引发KeyDown和KeyUp事件。
https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.control.keypress
KeyPress是一个比KeyDown(和KeyUp)更高层次的抽象。KeyDown和KeyUp是与硬件相关的:按键在键盘上的实际动作。KeyPress更多的是“我从键盘上收到一个字符”。
按下键是按下键而不释放它,按键是一个完整的按下-释放周期。
换句话说,KeyDown + KeyUp = Keypress
来自博客开发者:
为了理解按下键和按下键的区别,理解“字符”和“键”的区别是有用的。“键”是计算机键盘上的一个物理按钮,而“字符”是通过按下按钮键入的符号。理论上,keydown和keyup事件代表按键被按下或释放,而keypress事件代表正在输入的字符。该理论在所有浏览器中的实现并不相同。
注意:您还可以尝试Key Event Tester(在上述站点上可用)来理解这个概念。