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中捕获上下左右键等控制键的按键事件

时间: 2024-09-19 09:12:36

C# WinForm中PreviewKeyDown、KeyDown、KeyPress、KeyUp区别与联系的相关文章

jQuery 键盘事件keydown ,keypress ,keyup介绍

一.首先需要知道的是: 1.keydown() keydown事件会在键盘按下时触发. 2.keyup()  代码如下 复制代码 $('input').keyup(funciton(){           alert('keyup function is running!!');         }); keyup事件会在按键释放时触发,也就是你按下键盘起来后的事件 3.keypress() keypress()事件和keydown是差不多的,只有一个例外,如果需要阻止按键的默认行为,你必须是

Javascript中KeyDown、KeyUp和KeyPress三个事件区别

在js中三个事件都是按键事件了,下面我们来看看KeyDown,KeyUp,KeyPress这三个事件的区别在哪里吧,希望例子能帮助到各位. 1.引发事件的按键 非字符键不会引发 KeyPress 事件,但非字符键却可以引发 KeyDown 和 KeyUp 事件.KeyPress 事件 KeyChar 属性可以获取输入的字符. 2.事件引发的时间 KeyDown 和 KeyPress 事件在按下键时发生,KeyUp 事件在释放键时发生. 3.事件发生的顺序 KeyDown -> KeyPress

js中kedown,keypress,keyup用法区别

1.keydown.keypress事件触发在文字还没敲进文本框,这时如果在keydown.keypress事件中输出文本框中的文本,得到的是触发键盘事件前的文本,而keyup事件触发时整个键盘事件的操作已经完成,获得的是触发键盘事件后的文本 Keypress是一个强大的键盘输入捕捉JavaScript库 .拥有一些非常特殊的功能,它非常容易上手和使用,大小只有9KB,并且不依赖其它JS框架  代码如下 复制代码 keypress.combo("shift s", function()

C#中KeyDown与KeyUp事件

在键盘按下键然后释放的过程中有3个事件发生,分别为KeyDown事件.KeyPress事件和KeyUp事件. KeyDown和KeyUp事件让应用程序捕捉用户在键盘上按下的特殊键或某些特定键甚至组合键,只有在想要取得按下键或特殊键的相关信息时,才用到KeyDown和KeyUp事件.下面对KeyDown和KeyUp事件分别进行介绍. 1.KeyDown事件 KeyDown事件在首次按下某个键时发生. 示例 KeyDown事件的使用 本示例中,判断用户是否按下特殊键,如果是,则显示在窗体的标题栏上.

winform中的righttoleft和textalign属性有什么区别?

问题描述 winform中的righttoleft和textalign属性有什么区别? winform中的righttoleft和textalign属性有什么区别?为什么righttoleft没有效果? 解决方案 http://bbs.csdn.net/topics/390094879 解决方案二: 说明对象不同 RightToLeft,组件是否应该从右向左进行绘制 TextAlign,指示应该如何对齐编辑控件的文本 两个是结合使用的 解决方案三: righttoleft 只对某些从右到左的语言

文本框-c# winform中如何控制焦点。新人求教。

问题描述 c# winform中如何控制焦点.新人求教. 如何实现光标在文本框的,数据库的表格在按上下键时可以移动.就是下面这种情况. 解决方案 private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.Down) { this.dataGridView1.Rows[this.dataGridView1.CurrentRow.Index + 1 > this.dataGridView1

c#-在winform中求一个只能输入 英文和数字的 正则表达式 要严谨点的

问题描述 在winform中求一个只能输入 英文和数字的 正则表达式 要严谨点的 在winform中 文本框 求一个只能输入 英文和数字的 正则表达式 要严谨点的 解决方案 在Changed里判断if (!Regex.IsMatch(textBox1.Text @""^[0-9A-Za-z]*$"")){ ...} 解决方案二: [0-9A-Za-z]* 解决方案三: 在文本框中添加一个KeyUp事件,绑定一个一个文本验证,至于正则,楼上的已经说了.希望对你有帮助.

c#4-c# 如何在winForm中实现扫码软件中的蒙板效果

问题描述 c# 如何在winForm中实现扫码软件中的蒙板效果 使用视频采集组件实现了一个扫码软件,现在能够正常的扫码,但是,整个页面都是摄像头采集到的视频画面,这个显然跟手机扫码的实现有区别,手机扫码时,四周有蒙板的效果,就是类似半透明的画面,找了一些资料,找到了半透明的组件,但是在运行的过程中,这些半透明的组件就消失了;如果单纯的覆盖在静态图片上,这个透明效果没有问题,但是在视频采集过程中,由于后面的图片在不断的切换,重画,前面的蒙板完全看不到... 请问有谁做过这方便的东西,帮忙给提个思路

.Net WInform开发笔记(二)Winform程序运行结构图及TCP协议在Winform中的应用_C#教程

中午没事,把去年刚毕业那会画的几张图翻出来了,大概介绍Winform应用程序运行的过程,以及TCP协议在Winform中的应用.如果有Windows消息机制等基础,很好理解这两张图. (1)Winform应用程序运行结构图 开发笔记(二)Winform程序运行结构图及TCP协议在Winform中的应用_C#教程-tcp ip协议 层结构图"> (2)TCP通讯协议在Winform程序中的应用示意图 熟悉整个程序的来龙去脉,编程的时候就会很轻松,不会云里雾里. 另附公司招聘面试题一份,用了几