C# 窗体中响应键盘事件剖析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C# 响应键盘事件(转2008年04月04日星期五 22:35C#中处理鼠标相关的事件:鼠标相关的事件大致有六种,分别是: "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 ponentModel ; using System.Windows.Forms ; using System.Data ; public class Form1 : Form { private
ponentModel.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 ; = "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"。