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


当前回答

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

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

其他回答

我一直认为keydown发生在你按下键的那一刻,keypress是按下键并释放它的动作。

我发现这个给出了一些不同的解释:http://bytes.com/topic/net/answers/649131-difference-keypress-keydown-event

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

换句话说,KeyDown + KeyUp = Keypress

来自博客开发者:

为了理解按下键和按下键的区别,理解“字符”和“键”的区别是有用的。“键”是计算机键盘上的一个物理按钮,而“字符”是通过按下按钮键入的符号。理论上,keydown和keyup事件代表按键被按下或释放,而keypress事件代表正在输入的字符。该理论在所有浏览器中的实现并不相同。

注意:您还可以尝试Key Event Tester(在上述站点上可用)来理解这个概念。

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

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

最简单的解释:

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

dddddd

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