zoukankan      html  css  js  c++  java
  • 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);
        }

  • 相关阅读:
    2018.4.26 lvm
    2018.4.25 github创建新项目
    2018.4.24 快排查找第K大
    2018.4.24 flask_mail使用
    SpringBoot中使用ES和MongoDB常用API
    设计模式-Template_Method模式
    设计模式-Chain of Responsibility模式
    设计模式-Observer模式
    设计模式-Adapter模式
    设计模式-Strategy模式
  • 原文地址:https://www.cnblogs.com/textword/p/4010935.html
Copyright © 2011-2022 走看看