KeyPress 和KeyDown 、KeyPress之间的区别

(一)键事件按下列顺序发生:

  1. KeyDown
  2. KeyPress
  3. KeyUp

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

(三)定义

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

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

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

(四)KeyPress 和KeyDown 、KeyPress之间的区别

1.KeyPress主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符 KeyDown 和KeyUp 通常可以捕获键盘除了PrScrn所有按键(这里不讨论特殊键盘的特殊键)

2.KeyPress 只能捕获单个字符KeyDown 和KeyUp 可以捕获组合键。

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

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

5.KeyPress 不区分小键盘和主键盘的数字字符。KeyDown 和KeyUp 区分小键盘和主键盘的数字字符。

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

(五)系统组合键的判定

在使用键盘的时候,通常会使用到CTRL+SHIFT+ALT 类似的组合键功能。对于此,我们如何来判定?

通过KeyUp 事件能够来处理(这里说明一下为什么不用KeyDown,因为在判定KeyDown的时候,CTRL、SHIFT和ALT 属于一直按下状态,然后再加另外一个键是不能准确捕获组合键,所以使用KeyDown 是不能准确判断出的,要通过KeyUp 事件来判定 )

1.KeyDown事件

  KeyDown事件在首次按下某个键时发生。

  示例  KeyDown事件的使用

  本示例中,判断用户是否按下特殊键,如果是,则显示在窗体的标题栏上。

  程序主要代码如下。

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
      string G_str_Mode = "";
      string G_str_text = e.KeyCode + ":" + e.Modifiers + ":" + e.KeyData + ":" + "(" + e.KeyValue + ")";
      if (e.Shift == true)
        G_str_Mode = "Shift 键被按下";
      if (e.Control == true)
        G_str_Mode = "Ctrl 键被按下";
      if (e.Alt == true)
        G_str_Mode = "Alt 键被按下";
      this.Text = G_str_text + G_str_Mode;
    }

  注意:上面的代码中,KeyDown事件取得了一个KeyEventArgs对象e,并返回相关的按键信息,KeyEventArgs参数提供数个属性值,这些属性根据键盘上被按下的按键返回对应值。KeyEventArgs参数的属性值如表所示。

  表   KeyEventArgs属性值

属性值 说明
Control 获取一个值,该值指示是否曾按下Ctrl键
KeyCode 获取KeyDown或KeyUp事件的键盘代码
KeyData 获取KeyDown或KeyUp事件的键数据
KeyData 获取KeyDown或KeyUp事件的键数据
KeyValue 获取KeyDown或KeyUp事件的键盘值
Modifiers 获取KeyDown或KeyUp事件的修饰符标志。这些标志指示按下的Ctrl、Shift和Alt键的组合
Shift 获取一个值,该值指示是否曾按下Shift键

 2.Keyup事件

 Keyup事件在释放键时发生。

 示例 Keyup事件的使用

 本示例实现的是,当程序运行的时候,按完键盘后,自动设置窗体的大小。

 程序主要代码如下。

 private void frmKeyDownUP_KeyUp(object sender, KeyEventArgs e)
  
    {
      this.ClientSize = new System.Drawing.Size(800,100);
    }

(一)键事件按下列顺序发生:

  1. KeyDown
  2. KeyPress
  3. KeyUp

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

(三)定义

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

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

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

(四)KeyPress 和KeyDown 、KeyPress之间的区别

1.KeyPress主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符 KeyDown 和KeyUp 通常可以捕获键盘除了PrScrn所有按键(这里不讨论特殊键盘的特殊键)

2.KeyPress 只能捕获单个字符KeyDown 和KeyUp 可以捕获组合键。

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

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

5.KeyPress 不区分小键盘和主键盘的数字字符。KeyDown 和KeyUp 区分小键盘和主键盘的数字字符。

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

(五)系统组合键的判定

在使用键盘的时候,通常会使用到CTRL+SHIFT+ALT 类似的组合键功能。对于此,我们如何来判定?

通过KeyUp 事件能够来处理(这里说明一下为什么不用KeyDown,因为在判定KeyDown的时候,CTRL、SHIFT和ALT 属于一直按下状态,然后再加另外一个键是不能准确捕获组合键,所以使用KeyDown 是不能准确判断出的,要通过KeyUp 事件来判定 )

1.KeyDown事件

  KeyDown事件在首次按下某个键时发生。

  示例  KeyDown事件的使用

  本示例中,判断用户是否按下特殊键,如果是,则显示在窗体的标题栏上。

  程序主要代码如下。

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
      string G_str_Mode = "";
      string G_str_text = e.KeyCode + ":" + e.Modifiers + ":" + e.KeyData + ":" + "(" + e.KeyValue + ")";
      if (e.Shift == true)
        G_str_Mode = "Shift 键被按下";
      if (e.Control == true)
        G_str_Mode = "Ctrl 键被按下";
      if (e.Alt == true)
        G_str_Mode = "Alt 键被按下";
      this.Text = G_str_text + G_str_Mode;
    }

  注意:上面的代码中,KeyDown事件取得了一个KeyEventArgs对象e,并返回相关的按键信息,KeyEventArgs参数提供数个属性值,这些属性根据键盘上被按下的按键返回对应值。KeyEventArgs参数的属性值如表所示。

  表   KeyEventArgs属性值

属性值 说明
Control 获取一个值,该值指示是否曾按下Ctrl键
KeyCode 获取KeyDown或KeyUp事件的键盘代码
KeyData 获取KeyDown或KeyUp事件的键数据
KeyData 获取KeyDown或KeyUp事件的键数据
KeyValue 获取KeyDown或KeyUp事件的键盘值
Modifiers 获取KeyDown或KeyUp事件的修饰符标志。这些标志指示按下的Ctrl、Shift和Alt键的组合
Shift 获取一个值,该值指示是否曾按下Shift键

 2.Keyup事件

 Keyup事件在释放键时发生。

 示例 Keyup事件的使用

 本示例实现的是,当程序运行的时候,按完键盘后,自动设置窗体的大小。

 程序主要代码如下。

 private void frmKeyDownUP_KeyUp(object sender, KeyEventArgs e)
  
    {
      this.ClientSize = new System.Drawing.Size(800,100);
    }

时间: 2024-10-10 22:14:18

KeyPress 和KeyDown 、KeyPress之间的区别的相关文章

KeyPress 和KeyDown KeyPress之间的区别

虽然从字面理解, KeyDown是按下一个键的意思, 但实际上二者的根本区别是, 系统由KeyDown返回键盘的代码, 然后由TranslateMessage函数翻译成成字符, 由KeyPress返回字符值. 因此在KeyDown中返回的是键盘的代码, 而KeyPress返回的是ASCII字符. 所以根据你的目的, 如果只想读取字符, 用KeyPress, 如果想读各键的状态, 用KeyDown. keydown:用户在键盘上按下某按键是发生.一直按着某按键则会不断触发(opera浏览器除外).

keydown,keypress,keyup三者之间的区别

最近看了Javascript高级教程中对过滤输入的介绍,想实现比如电话号码中不能包好非数值的字符,而相应文本中插入字符的操作是keypress事件,所以就想通过阻止这个事件的默认事件行为来阻止这个事件的默认行为来屏蔽此类字符,但是屏蔽之后所有的安检操作都会被屏蔽,文本框会变成可读的.如果只想屏蔽特定的字符,需要检测keypress事件对应的字符编码,然后决定如何响应. 但是我在利用keypree事件的时候,完全搞蒙了.因为前面看了keydown.keypress.keyup事件,它们到底怎么用呢

keypress 、keydown、keyup后触发回车

1.keypress .keydown.keyup的区别 keypress表示键盘按下的全过程,只有按下任意字母数字键(后退.删除等系统功能键无效)时才触发,捕获到的keyCode区分大小写 keydown表示键盘按下但还没弹起之前触发,即前半段触发,按下任意键盘键均可触发,捕获到的keyCode不区分大小写 keyup表示键盘按下后弹起的过程中触发,即后半段触发,按下任意键盘键均可触发,捕获到的keyCode不区分大小写 事件的触发顺序 keydown -> keypress -> keyu

KeyPress 和KeyDown 、KeUp之间的区别

前几天,在写完一个功能模块上线测试的时候,出现了一个诡异的问题.input 框在输入查询内容之后,按回车键居然有两种不同的表现形式(input 框没有绑定键盘事件),谷歌和火狐功能正常,但IE在按了回车键以后居然自动调用方法. 页面结构:标签上没绑定任何键盘事件,控制器内也没有给元素绑定键盘事件. <div class="search-input-tel search-input-visit-tel" > <input class="searchinput-

转载关于KeyPress和KeyDown事件的区别和联系

KeyDown:在控件有焦点的情况下按下键时发生. KeyPress:在控件有焦点的情况下按下键时发生. KeyUp:在控件有焦点的情况下释放键时发生. 1.KeyPress主要用来接收字母.数字等ANSI字符   KeyDown 和 KeyUP 事件过程通常可以捕获键盘除了PrScrn(在键盘右上角)所有按键(这里不讨论特殊键盘的特殊键) 2.KeyPress 只能捕获单个字符   KeyDown 和KeyUp 可以捕获组合键. 3.KeyPress 不显示键盘的物理状态(SHIFT键),而只

keyDown keyPress keyUp 事件的区别

keyDown keyPress keyUp  事件的区别 一 触发顺序 显而易见,事件发生的顺序是: keydown --> keypress --> keyup 当按住一个键一段时间后再放开时,结果为: keydownkeypresskeydownkeypresskeydownkeypresskeydownkeypress ...keyup n个keydown和n个keypress,1个keyup,系统设置的时间间隔. 二 具体区别 KeyPress主要用来接收字母.数字等ANSI字符,而

键盘事件之keydown keypress keyup区别

经过测试,显然事件执行的顺序是: keydown->keypress->keyup. 但是连续按一个按键的话,会一直触发:keydown keypress.直到你提起按键,会触发keyup. 但是对一些特殊的键子,各个事件在浏览器里能触发的事件并不一样. 有几点需要注意: 1.像keypress对: shift ctrl 上下键等非字符的输入不会触发. 2.在enter键遇到form表单的时候,当只有一个文本框里并且输入ENTER的时候,form表单会自动提交,这时候只会触发keydown,k

KeyDown,KeyPress和KeyUp详解(转)

1.按键的类型 Windows窗体将键盘输入标识为由按位Keys枚举表示的虚拟键代码.使用Keys枚举,可以综合一系列按键以生成单个值,这些值与WM_KEYDOWN和WM_SYSKEYDOWNWindows消息所伴随的值相对应.另外,程序开发人员可通过处理KeyDown或KeyUp 事件来检测大多数物理按键操作.字符键是Keys枚举的子集,它们与WM_CHAR和WM_SYSCHAR Windows消息所伴随的值相对应,如果通过组合按键得到一个字符,则可以通过处理KeyPress事件来检测该字符.

KeyDown,KeyPress 和KeyUp

研究了一下KeyDown,KeyPress 和KeyUp ,发现之间还是有点学问的.让我们带着如下问题来说明,如果你看到这些问题你都知道,那么这篇文章你就当复习吧:) 1.这三个事件的顺序是怎么样的? 2.KeyDown 触发后,KeyUp是不是一定触发? 3.三个事件的定义 4.KeyDown.KeyUp 和KeyPress 之间的区别 5.如何区分是否按的是小键盘? 6.PrScrn按键三个事件能够捕获吗? 7.{菜单键}和{开始键}KeyPress能够捕获吗? 8.如何捕获系统的组合键?