跳转至

鼠标事件(MouseEnter / MouseLeave / Click)#

来源D:\study\C#1\WinForm\stu0805\stu0805stu0806\0806\图片


1. 常用鼠标事件#

事件 触发时机 典型场景
Click 点击时 按钮功能
MouseEnter 鼠标移入 悬停效果
MouseLeave 鼠标移出 恢复原样
MouseDown / MouseUp 按下 / 松开 拖拽、按住状态
MouseMove 鼠标移动时 实时跟随

2. 实战一:鼠标悬停切换密码框显隐#

private void button1_MouseEnter(object sender, EventArgs e)
{
    textBox1.UseSystemPasswordChar = false;  // 鼠标移入:显示明文
}

private void button1_MouseLeave(object sender, EventArgs e)
{
    textBox1.UseSystemPasswordChar = true;   // 鼠标移出:显示密文
}

3. 实战二:鼠标悬停切换图片#

private void label1_MouseEnter(object sender, EventArgs e)
{
    pb1.Visible = true;
    pb1.Image = Properties.Resources.guga;    // 鼠标移入显示大图
}

private void label1_MouseLeave(object sender, EventArgs e)
{
    pb1.Image = Properties.Resources._131905150_p0_master1200;  // 鼠标移出恢复默认
}

图片点击切换#

// 点击不同的图片名,切换大图显示
private void feibi_Click(object sender, EventArgs e)
{
    pb1.Image = Properties.Resources.phoebe_1;
}

private void guga_Click(object sender, EventArgs e)
{
    pb1.Image = Properties.Resources.guga;
}

// 鼠标悬停时自动切换
private void feibi_MouseEnter(object sender, EventArgs e)
{
    pb1.Image = Properties.Resources.phoebe_1;
}

4. 实战三:小图点击 → 大图预览(sender 共用事件)#

// 多个小图 PictureBox 共用同一个事件
private void img1_Click(object sender, EventArgs e)
{
    imgB.Image = (sender as PictureBox).Image;   // 把被点击的小图给大图
    imgB.SizeMode = PictureBoxSizeMode.Zoom;     // 等比缩放显示
}

💡 通过 sender 拿到被点击的 PictureBox,一张事件处理所有小图。见 02-事件机制/02-事件的联动响应与sender

5. 鼠标事件参数(MouseEventArgs)#

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    label1.Text = $"坐标:({e.X}, {e.Y})";   // 鼠标在控件内的坐标
    label2.Text = $"按钮:{e.Button}";        // 按下的鼠标键
}
MouseEventArgs 属性 说明
e.X / e.Y 鼠标在当前控件内的坐标
e.Button 按下的鼠标键(Left / Right / Middle)
e.Clicks 点击次数(可判断双击)

相关笔记#