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