在C#中和键盘相关的事件相对比较少,大致就三种:"KeyDown"、"KeyUp"和"KeyPress"。
在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 )
{
//此处加入响应此事件的代码
}
(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属性是指:确定窗体上控件的键盘事件是否已向窗体注册。