C#常用鼠标事件大全(附带实例)
C# 中最常用的鼠标事件是 Click 事件,当我们设计窗口应用程序,使用鼠标时其实还会有下列常见的事件:
当有鼠标事件产生时,相关的鼠标事件管理程序的第二个参数类型会由 EventArgs e 改为 MouseEventArgs e,由这个参数我们可以获得鼠标按键的相关信息。
【实例】使用 ListBox 列表记录鼠标在 TextBox 的操作事件,如果双击“测试鼠标事件”标签,此标签会用蓝色显示。
Button:可以了解是按了鼠标的哪一个按钮,C# 是用列举(Enum)MouseButtons 处理按钮值,相关参数值如下:
【实例】创建 TextBox 进行测试,在此控件单击,可以在标签字段记录所按的按钮,同时输出鼠标光标在 TextBox 的坐标。此 TextBox 的 BorderStyle 属性是 Fixed3D,Mutiline 属性是 True。lblEButton 的 AutoSize 属性是 False,BorderStyle 属性是 Fixed3D。
事件名称 | 说明 |
---|---|
DoubleClick | 双击事件。 |
MouseDown | 按下鼠标产生此事件。 |
MouseEnter | 当鼠标光标进入控件时产生此事件。 |
MouseHover | 当鼠标光标暂停在控件时产生此事件。 |
MouseMove | 当鼠标移动时产生此事件。 |
MouseUp | 当放开所按的鼠标按钮时会产生此事件。 |
MouseLeave | 当鼠标光标离开控件时产生此事件。 |
当有鼠标事件产生时,相关的鼠标事件管理程序的第二个参数类型会由 EventArgs e 改为 MouseEventArgs e,由这个参数我们可以获得鼠标按键的相关信息。
【实例】使用 ListBox 列表记录鼠标在 TextBox 的操作事件,如果双击“测试鼠标事件”标签,此标签会用蓝色显示。
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void label1_DoubleClick(object sender, EventArgs e) { label1.ForeColor = Color.Blue; // 标签颜色改为蓝色 } private void textBox1_MouseEnter(object sender, EventArgs e) { listBox1.Items.Add("鼠标进入TextBox"); } private void textBox1_MouseLeave(object sender, EventArgs e) { listBox1.Items.Add("鼠标离开TextBox"); } private void textBox1_Click(object sender, EventArgs e) { listBox1.Items.Add("鼠标单击TextBox"); } private void textBox1_DoubleClick(object sender, EventArgs e) { listBox1.Items.Add("鼠标双击TextBox"); } }执行结果为:

C#事件的EventArgs e参数
我们学习了控件的基础知识,也认识了事件处理程序的 sender 参数,事件处理程序的第 2 个参数是 EventArgs e 参数,在鼠标事件中此参数的类型是 MouseEventArgs,这个参数其实记录了按了鼠标的哪一个键,同时回传鼠标光标的坐标,e 参数的属性如下:- X:鼠标光标的 X 坐标;
- Y:鼠标光标的 Y 坐标。
Button:可以了解是按了鼠标的哪一个按钮,C# 是用列举(Enum)MouseButtons 处理按钮值,相关参数值如下:
- Left:按鼠标左边按钮;
- Middle:按鼠标的滚轮;
- Right:按鼠标右边按钮;
- None:没有按鼠标按钮。
【实例】创建 TextBox 进行测试,在此控件单击,可以在标签字段记录所按的按钮,同时输出鼠标光标在 TextBox 的坐标。此 TextBox 的 BorderStyle 属性是 Fixed3D,Mutiline 属性是 True。lblEButton 的 AutoSize 属性是 False,BorderStyle 属性是 Fixed3D。
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void textBox1_MouseUp(object sender, MouseEventArgs e) { string buttonMsg = string.Empty; switch (e.Button) { case MouseButtons.Left: buttonMsg = "按左键"; break; case MouseButtons.Right: buttonMsg = "右键单击"; break; case MouseButtons.Middle: buttonMsg = "按中间键"; break; } string loc = "X = " + e.X + ", Y = " + e.Y; lblEButton.Text = buttonMsg + loc; } }执行结果为:
