C#中处理和键盘相关的事件

在C#中和键盘相关的事件相对比较少,大致就三种:"KeyDown"、"KeyUp"和"KeyPress"。


(1)如何在C#程序中定义这些事件

  C#中描述"KeyDown"、"KeyUp"的事件的Delegate 是"KeyEventHandler",数据的类是"KeyEventArgs"。而描述"KeyPress"所用的 Delegate是"KeyPressEventHandler",数据的类是"KeyPressEventArgs"。这二个Delegate都被封装在命名空间"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"是定义的一个按钮组件。


(2)假如窗体Form中已经有控件,而又想响应窗体Form的键盘响应事件,如Form1_KeyPress事件,此时你会发现,当前当你按下按键的时候,Form1_KeyPress事件并没有得到响应,为什么呢?因为KeyPress事件是在控件获得焦点的时侯,按下按键才能得到响应的,当窗体中有控件时,窗体是不会获得焦点的,除非窗体中没有控件,此时窗体就是当前获得焦点,可以响应响应的键盘事件。

    当窗体中有控件时,如何解决窗体键盘响应事件呢?方法很简单,只需把Form1 的KeyPreview属性设为true即可。KeyPreview属性是指:确定窗体上控件的键盘事件是否已向窗体注册。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值