首页 > 编程笔记 > C#笔记 阅读:1

C#常用鼠标事件大全(附带实例)

C# 中最常用的鼠标事件是 Click 事件,当我们设计窗口应用程序,使用鼠标时其实还会有下列常见的事件:

事件名称 说明
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 参数的属性如下:
Button:可以了解是按了鼠标的哪一个按钮,C# 是用列举(Enum)MouseButtons 处理按钮值,相关参数值如下:
【实例】创建 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;
    }
}
执行结果为:

相关文章