在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 ;
在程序运行中,产生事件的主体有很多,其中尤其以键盘和鼠标为最多。本文就来探讨一下在C#中和这二个主体相关的事件的处理过程。

一.本文介绍的程序设计和运行的软件环境:

(1).微软公司视窗2000服务器版

(2)..Net FrameWork SDK Beta 2

二.C#中处理鼠标相关的事件:

鼠标相关的事件大致有六种,分别是 :

"MouseHover"、"MouseLeave"、"MouseEnter"、"MouseMove"、"MouseDown"和"MouseUp"。

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

在C#中是通过不同的Delegate来描述上述事件,其中描述"MouseHover"、"MouseLeave"、"MouseEnter"事件的Delegate是"EventHandler",而描述后面的三个事件的Delegate是"MouseEventHandler"来描述。这二个Delegate分别被封装在不同的命名空间,其中"EventHandler"被封装在"System"命名空间;"MouseEventHandler"被封装在"Syetem.Windows.Froms"命名空间中的。在为"MouseHover"、"MouseLeave"、"MouseEnter"事件通过数据的类是"EventArgs",他也被封装在"System"命名空间中;而为后面的三个事件提供数据的类是"MouseEventArgs",他却被封装在"Syetem.Windows.Froms"命名空间。以上这些就决定了在C#中定义这些事件和响应这些事件有着不同的处理办法。下面就来介绍这些不同点。

对于上述的前三个事件,是用以下语法来定义的:

"组件名称"."事件名称"+= new System.EventHandler("事件名称");

下面是程序中具体实现代码:

button1.MouseLeave += new Syetem.EvenHandler(button1_MLeave);

在完成了事件的定义以后,就要在程序中加入响应此事件的代码,否则程序编译的时候会报错。下面是响应上面事件的基本结构。

private void button1_MLeave ( object sender , System.EventArgs e )

{

此处加入响应此事件的代码



定义"MouseMove"、"MouseDown"和"MouseUp"事件的语法和前面介绍的三个事件大致相同,具体如下:

"组件名称"."事件名称"+= new System.Windows.Forms. MouseEventHandler("事件名称");
下面是程序中具体实现代码:

button1.MouseMove += new System.Windows.Forms.MouseEventHandler(button1_MMove); 

下面是响应上面事件的基本结构:

private void button1_MMove ( object sender , System.Windows.Forms. MouseEventArgs e )

{

此处加入响应此事件的代码



注释:在上述程序中的"button1"是定义的一个按钮组件。

2).鼠标相关事件中的典型问题处理办法:

在掌握了C#中定义和鼠标相关的事件,我们就来探讨一下和鼠标相关事件的典型问题。其一是读取鼠标的当前位置;其二是判定到底是那个鼠标按键按动。

判定鼠标的位置可以通过事件"MouseMove"来处理,在"MouseEventArgs"类中提供了二个属性"X"和"Y",来判定当前鼠标纵坐标和横坐标。而判定鼠标按键的按动情况,可以通过事件"MouseDown"来处理,并且在"MouseEventArgs"类中也提供了一个属性"Button"来判定鼠标按键情况。根据这些知识,可以得到用C#编写的读取鼠标当前位置和判定鼠标按键情况的程序代码。下面就是此代码(mouse.cs)和此代码编译后运行界面:

mouse.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 ( ) ;

}

file://清除程序中使用过的资源

protected override void Dispose ( bool disposing )

{

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_MouseDown"

this.MouseDown += new MouseEventHandler ( Form1_MouseDown ) ;

file://为鼠标移动定义一个事件处理过程"Form1_MouseMove"

this.MouseMove += new MouseEventHandler ( Form1_OnMouseMove ) ;

}

static void Main ( )

{

Application.Run ( new Form1 ( ) ) ;

}

private void Form1_OnMouseMove ( object sender , MouseEventArgs e )

{

this.Text = "当前鼠标的位置为:( " + e.X + " , " + e.Y + ")" ;

}

private void Form1_MouseDown ( object sender , MouseEventArgs e )

{

file://响应鼠标的不同按键

if ( e.Button == MouseButtons.Left )

{

MessageBox.Show ( "按动鼠标左键!" ) ;

}

if ( e.Button == MouseButtons.Middle )

{

MessageBox.Show ( "按动鼠标中键!") ;

}

if ( e.Button == MouseButtons.Right )

{

MessageBox.Show ( "按动鼠标右键!") ;

}

}

}

三.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"中。
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 ( ) , "您所按动的健为:" ) ;

}

}

四.总结:

本文介绍了在C#中如何定义和鼠标和键盘相关的事件和在这些事件中一些典型问题的处理办法。虽然这些知识最为基本,但也最为重要,因为在程序设计中,这些问题和我们打交道的机会最多。当然和鼠标和键盘相关的事件和问题还有许多,可以参照根据上面的解决办法加以解决。

转载于:https://www.cnblogs.com/nbwzy/archive/2007/05/23/757431.html

C#处理鼠标和键盘事件相关推荐

  1. python监听鼠标事件_Python中使用PyHook监听鼠标和键盘事件实例

    Python 中使用 PyHook 监听鼠标和键盘事件实例 PyHook 是一个基于 Python 的"钩子"库,主要用于监 听当前电脑上鼠标和键盘的事件.这个库依赖于另一个 Py ...

  2. tkinter中鼠标与键盘事件

    tkinter中鼠标与键盘事件(十五) 本文转自Tynam Yang的博客园 import tkinterwuya = tkinter.Tk() wuya.title("wuya" ...

  3. Android 使用 sendevent 模拟鼠标和键盘事件

    Android 使用 sendevent 模拟鼠标和键盘事件 模拟原理是对驱动发送消息,就是linux里面的input子系统. 命令格式: sendevent /dev/input/eventX [t ...

  4. HTML5 Canvas鼠标与键盘事件

    演示HTML5 Canvas鼠标事件,获取Canvas对象上的鼠标坐标,演示键盘事件 通过键盘控制Canvas上对象移动. Canvas对象支持所有的JavaScript的鼠标事件,包括鼠标点击(Mo ...

  5. 【Qt】QT鼠标和键盘事件

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 鼠标事件 04. 键盘事件 05. 附录 01. 概述 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者 ...

  6. 简单的鼠标和键盘事件+阻止默认阻止冒泡+dom0,dom2

    什么是事件 在我们学习DOM之后,事件就是我们必不可少的一块知识点了,事件其实就是我们的一些操作需要在用户来完成之后才执行的.比如我们PC端的点击事件,键盘事件,以及我们移动端的的触屏事件.接下来咱们 ...

  7. html5鼠标事件监听,HTML5 Canvas鼠标与键盘事件

    演示HTML5 Canvas鼠标事件,获取Canvas对象上的鼠标坐标,演示键盘事件 通过键盘控制Canvas上对象移动. Canvas对象支持所有的JavaScript的鼠标事件,包括鼠标点击(Mo ...

  8. HTML将canvas画布鼠标事件,HTML5 Canvas鼠标与键盘事件demo示例

    演示html5 canvas鼠标事件,获取canvas对象上的鼠标坐标,演示键盘事件通过键盘控制canvas上对象移动. canvas对象支持所有的javascript的鼠标事件,包括鼠标点击(mou ...

  9. PyQt5 笔记8 -- 鼠标、键盘事件

    PyQt5 笔记8 – 鼠标.键盘事件 参考博客(鼠标事件) 参考博客(键盘事件) 1.鼠标事件 事件: mousePressEvent (self, event):鼠标键按下事件 mouseRele ...

  10. linux c/c++监听鼠标或键盘事件

    linux c/c++监听鼠标或键盘事件 1.输入设备在文件/proc/bus/input/devices中,如: 其中Handlers=kbd event2,说明其值可以在/dev/input文件夹 ...

最新文章

  1. 中关村开源创新大赛-达闼赛道如火如荼进行中
  2. 信息安全“拷问”智慧城市建设 如何解决
  3. python编程视频-Python开发视频百度就得看这个!
  4. LeetCode Additive Number(递归)
  5. apply plugin: 'idea' --- gradle idea
  6. 徐涛八套卷pdf_徐涛八套卷pdf,11月9日资料更新!
  7. Windows Server 2008 R2 之三十故障转移群集(二)
  8. 核弹级漏洞 Apache Log4j2 漏洞详情和修复建议
  9. GDI+ is F**king unbelievable
  10. Ubuntu下多版本OpenCV共存和切换
  11. Ubuntu系统lamp环境下安装wordpress、zencert和mangento程序网站
  12. [Hive]-架构篇
  13. 计算机组成原理华中科技大学秦磊华,计算机组成原理(华科)chap1
  14. sprintf_s函数用法
  15. 三星S7edge刷极光ROM的总结
  16. C#开发DIY照片书软件(C#图形图像开发)
  17. 【每日一练】JS基础选择题
  18. 计算机二级C语言公共基础知识,以及习题总结(三)查找和排序
  19. 微信新功能,最牛的不是“斗图”!
  20. 高精度ua级恒流源_高精度低温漂CMOS电流源的设计

热门文章

  1. 问村民一个什么问题就能决定走哪条路?
  2. java扶贫,基于jsp的扶贫网站-JavaEE实现扶贫网站 - java项目源码
  3. python递归遍历目录_Python实现递归遍历文件夹并删除文件
  4. print输出保存到txt
  5. ShuttleFlow 2.0版本跨链协议上线,同时支持OKExChain、Heco及BSC双向互操作
  6. SAP License:SAP Query操作手册
  7. Axure智慧、智能乡镇通数字管理服务平台+基础数据管理+招商后台管理+web端高保真管理后台
  8. Python入门学习笔记(8)
  9. Coding Interview Guide -- 翻转字符串
  10. JavaScript 原型对象和原型链