C# WinForm中PreviewKeyDown、KeyDown、KeyPress、KeyUp区别与联系

网友投稿 2303 2022-10-27

C# WinForm中PreviewKeyDown、KeyDown、KeyPress、KeyUp区别与联系

C# WinForm中PreviewKeyDown、KeyDown、KeyPress、KeyUp区别与联系

1、键事件按下列顺序发生:

PreviewKeyDown

KeyDown

KeyPress

KeyUp

2、KeyDown触发后,不一定触发KeyUp,当KeyDown 按下后,拖动鼠标,那么将不会触发KeyUp事件。

3、定义

​​​PreviewKeyDown​​​:在焦点位于此控件上的情况下,当有按键动作时发生(在 KeyDown 事件之前发生)。

小注:

某些按键,比如 Tab、Return、Esc 和箭头键,通常会被某些控件忽略,因为它们没有被视为输入按键。 例如,默认情况下,Button 控件忽略箭头键。 通常按箭头键会使焦点移动到上一个或下一个控件。 箭头键被视为导航键,按这些键通常不会引发 Button 的 KeyDown 事件。 但是,按 Button 的箭头键的确将引发 PreviewKeyDown 事件。 通过为 Button 处理 PreviewKeyDown 事件和把 IsInputKey 属性设置为 true,可以在按箭头键时提出 KeyDown 事件。 但是,如果处理箭头键,则焦点将不再移动到上一个或下一个控件。

​​​KeyDown​​​:在控件有焦点的情况下按下键时发生。

小注:

若要仅在窗体级别处理键盘事件而不允许其他控件接收键盘事件,请将窗体的 KeyPress 事件处理方法中的 KeyPressEventArgs.Handled 属性设置为 true。 某些键,如 Tab、Return、Esc 和箭头键,由控件自动处理。 为使这些键引发 KeyDown 事件,必须在窗体上的每个控件中重写 IsInputKey 方法。 用于重写 IsInputKey 的代码需要确定是否按下了某个特殊键,并且需要返回一个 true 值。 不用重写 IsInputKey 方法,您可以处理 PreviewKeyDown 事件并将 IsInputKey 属性设置为 true。 有关代码示例,请参见 PreviewKeyDown 事件。

​​​KeyPress​​​:在控件有焦点的情况下按下键时发生。(下面会说和KeyDown 的区别)

小注:

KeyPress 事件不能由非字符键引发;但是非字符键能够引发 KeyDown 和 KeyUp 事件。

使用 KeyChar 属性采样运行时的键击,以及使用或修改常用键击的一个子集。

若要仅在窗体级别处理键盘事件而不允许其他控件接收键盘事件,请将窗体的 KeyPress 事件处理方法中的 KeyPressEventArgs.Handled 属性设置为 true。

​​​KeyUp​​​:在控件有焦点的情况下释放键时发生。

小注:

若要仅在窗体级别处理键盘事件而不允许其他控件接收键盘事件,请将窗体的 KeyPress 事件处理方法中的 KeyPressEventArgs.Handled 属性设置为 true。 某些键,如 Tab、Return、Esc 和箭头键,由控件自动处理。 为使这些键引发 KeyUp 事件,必须在窗体上的每个控件中重写 IsInputKey 方法。 用于重写 IsInputKey 的代码需要确定是否按下了某个特殊键,并且需要返回一个 true 值。

4、KeyPress 和KeyDown 、KeyPress之间的区别

KeyPress主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、    PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符

KeyDown 和KeyUp 通常可以捕获键盘除了PrScrn所有按键(这里不讨论特殊键盘的特殊键)

KeyPress 只能捕获单个字符

KeyDown 和KeyUp 可以捕获组合键。

KeyPress 可以捕获单个字符的大小写

KeyDown和KeyUp 对于单个字符捕获的KeyValue 都是一个值,也就是不能判断单个字符的大小写。

KeyPress 不区分小键盘和主键盘的数字字符。

KeyDown 和KeyUp 区分小键盘和主键盘的数字字符。

其中PrScrn 按键KeyPress、KeyDown和KeyUp 都不能捕获。

小注:

KeyDown捕获不到键盘输入,注意窗口的keypreview属性设置为true

​​在winform中捕获上下左右键等控制键的按键事件​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:access_profiler - 一个工具用于统计在C++程序中访问成员变量
下一篇:IDEA一键部署SpringBoot项目到服务器的教程图解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~