zoukankan      html  css  js  c++  java
  • C#中KeyData、KeyCode、KeyValue和KeyChar的区别

    转自:http://hi.baidu.com/aerchi/item/1aa6cd34482cd4352f20c405

    KeyCode最为常用,记录了键盘上按了哪个键,当使用组合键时如ctrl+a,其值是"A";

    KeyData可以记录组合键,当使用组合键时如ctrl+a时,其值为"A,ctrl";

    KeyValue则是KeyCode的数字值,当使用组合键时如ctrl+a时,其值为65(A),注意不是97(a);

    注意:这三个属性对于字母键只记录其大写的值(不管你是否开启了caplock或是按下shift键),如果一定要区分到底是大小写,可以使用KeyChar来判断。

    KeyPress事件
    KeyPressEventArgs参数

    Handled /是否处理过KeyPress事件
    KeyChar //按下的键对应的字符

    如果I,则keychar为i,如果shift+i,则keychar为I。
    如果是Ctrl+I,或ALt+I,根本不会得到一个keypress事件,因为他们是特殊的键序列,并非通过KeyPress发送。
    需要KeyDown

    KeyDown
    KeyEventArgs参数
       Alt 获取一个值,该值指示是否曾按下 Alt 键。 
       Control 获取一个值,该值指示是否曾按下 Ctrl 键。 
       Handled 获取或设置一个值,该值指示是否处理过此事件。 
       KeyCode 获取 KeyDown 或 KeyUp 事件的键盘代码。 
       KeyData 获取 KeyDown 或 KeyUp 事件的键数据。 
       KeyValue 获取 KeyDown 或 KeyUp 事件的键盘值。 
       Modifiers 获取 KeyDown 或 KeyUp 事件的修饰符标志。这些标志指示按下的 Ctrl、Shift 和 Alt 键的组合。 
       Shift 获取一个值,该值指示是否曾按下 Shift 键。 
    SuppressKeyPress 获取或设置一个值,该值指示键事件是否应传递到基础控件。 


    如果同时按下了Ctrl+Shift+I
    KeyData   Keys.Ctrl+Keys。Shift+Keys。I
    KeyCode Keys。I
    Modifiers Keys。Ctrl+Keys。Shift
    Alt false
    Ctrl true
    Shift true
    KeyValue 73
    KeyChar 不可用

    尽管我们处理了KeyDown来获得特殊的字符,但是有些特殊字符(比如箭头键)在默认的情况下并不传送给控件。为了启用他们,自定义控件可以重写来自基类的IsInputKey方法


    如果想在键盘事件之外获悉修饰键的状态,可以通过Control类的静态属性ModifierKeys来访问这类信息。

    void MyCon-Click(object sender,EventArgs e)
    {
    if(Control.ModifierKeys==Keys.Control)
    {
    }
    }
    检查在鼠标点击事件中,Ctrl键是否是唯一被按下的修饰键。

  • 相关阅读:
    基于ModBus-TCP/IT 台达PLC 通讯协议解析
    TNS-12541: TNS: 无监听程序 解决方案
    一个很好的ping端口的工具
    上位机(开发)
    无名
    网站部署
    cordova 开发
    mono 开发
    调用 浏览器 插件
    MacBook 配置
  • 原文地址:https://www.cnblogs.com/YangBinChina/p/2984281.html
Copyright © 2011-2022 走看看