C#键盘事件处理

如果你希望用户按F1弹出chm帮助,代码如下:
private void FrmMain_Load(object sender, EventArgs e)
{
    this.KeyPreview = true;//获取或设置一个值,该值指示在将键事件传递到具有焦点的控件前,窗体是否将接收此键事件。
}

private void FrmMain_KeyUp(object sender, KeyEventArgs e)
{
    if (Keys.F1 == e.KeyCode)

    {
        //MessageBox.Show("您所按动的键是:" + e.KeyCode.ToString());
        Help.ShowHelp(this,@"C:\Users\HongYe\Desktop\RevitAPI.chm");
    }
}

键盘事件是在用户按下键盘上的一个键的时候发生的,可分为两类。第一类是KeyPress事件,当按下的键表示的是一个ASCII字符的时候就会触发这类事件,可通过他的KeyPressEventArgs类型参数的属性KeyChar来确定按下的键的ASCII。使用KeyPress时间无法判断是否按下了修改键(Shift,AltCtrl),为了判断这些动作,就要处理KeyUp KeyDown事件,这些时间组成了第二类事件。该类事件有一个KeyEventsArgs类型参数,通过该参数可以测试是否按下了一些修改键。

1.       KeyPressEventArgs类的主属性(KeyPress事件的一个参数类型)
1.Handle属性:用来获取或设置一个值,该值指示是否处理过KeyPress事件。
2.KeyChar属性:用来获取按下的键对应的字符,通常是该键的ASCII玛(返回的是键盘的值,如按‘K‘返回就是K)。

2KeyEventArgs类的主属性(KeyUpKeyDown事件的一个参数)
1.Alt属性:用来获取一个值,该值提示是否曾按下了Alt
2.Control属性:用来获取一个值,该值提示是否曾按下了Crtl
3.Shift属性:用来获取一个值,该值提示是否曾按下了Shift
4.Handle属性:用来获取一个值,该值提示是否曾处理过此事件
5.KeyCode属性:以Keys枚举值返回键盘键的键码,该属性不包含修改键信息,用于测试指定的键盘键
6.KeyData属性:以Keys枚举值返回键盘键的键码,该属性包含修改键信息,用于判断按下键的所有信息(可返回组合键)
7.KeyValue属性:以整数形式返回键码,而不是Keys枚举类型值。用于获得所按下键的数字表示
8.Modifiers属性:以Keys枚举值返回所按下的修改键,仅判断修改键的信息

3.如何在C#程序中定义这些事件:
  C#中描述"KeyDown"、"KeyUp"的事件的Delegate是"KeyEventHandler"。而描述"KeyPress"所用的Delegate是"KeyPressEventHandler"。这二个Delegate都被封装在命名空"Syetem.Windows.Froms"中。为"KeyDown"、"KeyUp"的事件提供数据的类是"KeyEventArgs"。而为"KeyPress"事件提供数据的类是"KeyPressEventArgs"。同样这二者也被封装在命名空间"Syetem.Windows.Froms"中。

  在C#程序定义"KeyDown"、"KeyUp"事件的语法如下:
"组件名称"."事件名称"+= new Syetem.Windows.Froms. KeyEventHandler("事件名称");

  下面是程序中具体实现代码:
button1. KeyUp += new Syetem.Windows.Froms. KeyEventHandler(button1_KUp);

  下面是响应上面事件的基本结构。
private void button1_KUp ( object sender , Syetem.Windows.Froms. KeyEventArgs e )
{
此处加入响应此事件的代码
}

  在C#程序定义"KeyPress"事件的语法如下:
"组件名称"."事件名称"+= new Syetem.Windows.Froms. KeyPressEventHandler("事件名称");

  下面是程序中具体实现代码:
button1. KeyPress += new Syetem.Windows.Froms. KeyPressEventArgs(button1_KPress);

  在完成了事件的定义以后,就要在程序中加入响应此事件的代码,否则程序编译的时候会报错。下面是响应上面事件的基本结构。
private void button1_KPress ( object sender , Syetem.Windows.Froms. KeyPressEventArgs e )
{
此处加入响应此事件的代码

注释:程序中出现的"button1"是定义的一个按钮组件。

例子:
   private void Form1_KeyUp(object sender, KeyEventArgs e)
   {
    MessageBox.Show("您所按动的键是:"+e.KeyCode.ToString());
   }
url:http://greatverve.cnblogs.com/archive/2012/05/15/KeyCode.html

posted @ 2012-05-15 08:16  大气象  阅读(19984)  评论(7编辑  收藏  举报
http://www.tianqiweiqi.com