深入分析C#中处理和键盘相关事件的详解

所属分类: 软件编程 / C#教程 阅读数: 59
收藏 0 赞 0 分享
在C#中和键盘相关的事件相对比较少,大致就三种:"KeyDown"、"KeyUp"和"KeyPress"。
(1).如何在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"是定义的一个按钮组件。
(

(2).和键盘相关事件中的典型问题处理办法:
和键盘相关的典型问题无非就是判定到底是哪个按键被按动。通过上面的三个事件都可以完成。并且在"KeyEventArgs"类中通过了一个属 性"KeyCode",可以用他来读取当前按键。所以就在"KeyUp"或者"KeyDown"事件中处理这个问题。根据上面这些知识,可以得到用C#编 写读取读取按键的程序代码,下面就是此代码(key.cs)和此代码运行后的界面: 
图02:用C#读取键盘按键的程序运行界面
key.cs的代码如下:
复制代码 代码如下:

代码
 using System ;
  using System.Drawing ;
  using System.Collections ;
  using System.ComponentModel ;
  using System.Windows.Forms ;
  using System.Data ;
  public class Form1 : Form
 {
 private System.ComponentModel.Container components = null ;

 public Form1 ( )
 {
 file://初始化窗体中的各个组件
 InitializeComponent ( ) ;
 }
 protected override void Dispose ( bool disposing )
 {
 file://清除程序中使用过的资源
 if ( disposing )
 {
 if ( components != null )
 {
 components.Dispose ( ) ;
 }
 }
 base.Dispose ( disposing ) ;
 }
 private void InitializeComponent ( )
 {
 this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;
 this.ClientSize = new System.Drawing.Size ( 292 , 273 ) ;
 this.Name = "Form1" ;
 this.Text = "C#处理键盘事件!" ;
 file://为按键的按动定义一个事件处理过程"Form1_KeyUp"
 this.KeyUp += new KeyEventHandler ( this.Form1_KeyUp ) ;

 }
 static void Main ( )
 {
 Application.Run ( new Form1 ( ) ) ;
 }
 file://显示你所按动的按键名称
 private void Form1_KeyUp ( object sender , KeyEventArgs e )
 {
 MessageBox.Show ( e.KeyCode.ToString ( ) , "您所按动的健为:" ) ;

 }
 }

 上面都是网上找的,我看了之后,自己试了很多次,按键没反应......
 后来才在书上找到,原来 要先把对应的form 的KeyPreview属性设为true
 C# codethis.KeyPreview=true;this.KeyDown+=newKeyEventHandler(frmNewBook_KeyDown);

         }voidfrmNewBook_KeyDown(objectsender, KeyEventArgs e)
         {switch(e.KeyData)
             {caseKeys.F4:
                     Console.WriteLine("楼主给点分吧");break;//.........}
         }

更多精彩内容其他人还在看

WPF仿三星手机充电界面实现代码

这篇文章主要为大家详细介绍了WPF仿三星手机充电界面实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

浅谈C#各种数组直接的数据复制/转换

下面小编就为大家带来一篇浅谈C#各种数组直接的数据复制/转换。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

C#访问SQLServer增删改查代码实例

这篇文章主要为大家详细介绍了C#访问SQLServer增删改查代码实例,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

C#根据身份证号码判断出生日期和性别

这篇文章主要为大家详细介绍了C#根据身份证号码判断出生日期和性别的方法,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

C# 向Word中设置/更改文本方向的方法(两种)

在一般情况下word中输入的文字都是横向的,今天小编给大家带来两种方法来设置更改文本方向的方法,非常不错,对c# word 更改文本方向的知识感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

让C# Excel导入导出 支持不同版本Office

让C# Excel导入导出,支持不同版本的Office,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

C#设置自定义文件图标实现双击启动(修改注册表)

这篇文章介绍的是利用C#设置自定义文件图标,然后实现双击启动的功能,文章给出了示例代码,介绍的很详细,有需要的可以参考借鉴。
收藏 0 赞 0 分享

C#两个相同属性的类赋值方法

这篇文章主要介绍了C#两个相同属性的类赋值方法的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

C#中ListView控件实现窗体代码

这篇文章主要介绍了C#中ListView控件实现窗体的核心代码,非常不错,具有参考借鉴价值,对c#listview相关知识感兴趣的朋友一起学习吧
收藏 0 赞 0 分享

浅谈C# 序列化与反序列化几种格式的转换

下面小编就为大家带来一篇浅谈C# 序列化与反序列化几种格式的转换。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多