-
C#教程之深入分析C#中处理和键盘相关事件的详解
在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;//.........}
}
(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;//.........}
}
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式