C#之鼠标事件
-
Click: 此事件在释放鼠标按钮时发生,通常在 MouseUp 事件之前。 此事件的处理程序接收类型为 EventArgs 的参数。 如果只需确定何时发生单击,处理此事件。
-
MouseClick: 此事件在用户使用鼠标单击控件时发生。 此事件的处理程序接收类型为 MouseEventArgs 的参数。 如果需要在发生单击时获取有关鼠标的信息,处理此事件。
-
DoubleClick: 此事件在双击控件时发生。 此事件的处理程序接收类型为 EventArgs 的参数。 如果只需确定何时发生双击,处理此事件。
-
MouseDoubleClick: 此事件在用户使用鼠标双击控件时发生。 此事件的处理程序接收类型为 MouseEventArgs 的参数。 如果需要在发生双击时获取有关鼠标的信息,处理此事件。
-
MouseDown: 当鼠标指针位于控件上方并且用户按下鼠标按钮时,会发生此事件。 此事件的处理程序接收类型为 MouseEventArgs 的参数。
-
MouseEnter: 当鼠标指针进入控件的边框或工作区时(具体取决于控件的类型),会发生此事件。 此事件的处理程序接收类型为 EventArgs 的参数。
-
MouseHover: 此事件在鼠标指针停留在控件上时发生。 此事件的处理程序接收类型为 EventArgs 的参数。
-
MouseLeave: 当鼠标指针离开控件的边框或工作区时(具体取决于控件的类型),会发生此事件。 此事件的处理程序接收类型为 EventArgs 的参数。
-
MouseMove: 当鼠标指针发生移动但仍位于控件上方时,会发生此事件。 此事件的处理程序接收类型为 MouseEventArgs 的参数。
-
MouseUp: 当鼠标指针位于控件上方,并且用户释放鼠标按钮时,会发生此事件。 此事件的处理程序接收类型为 MouseEventArgs 的参数。
-
MouseWheel: 当用户滚动鼠标滚轮并且控件有焦点时,会发生此事件。 此事件的处理程序接收类型为 MouseEventArgs 的参数。 可以使用 MouseEventArgs 的 Delta 属性来确定鼠标滚动的距离。
namespace JSCLearn
{
public partial class FrmMouseEvent : Form
{
public FrmMouseEvent()
{
InitializeComponent();
}
protected override void OnClick(EventArgs e)
{
base.OnClick(e);
Console.WriteLine("鼠标上任意按钮单击事件");
}
protected override void OnMouseClick(MouseEventArgs e)
{
base.OnMouseClick(e);
Console.WriteLine($"坐标:{e.Location}");
if (e.Button == MouseButtons.Left)
{
Console.WriteLine("鼠标左键单击事件");
}
if (e.Button == MouseButtons.Right)
{
Console.WriteLine("鼠标右键单击事件");
}
if (e.Button == MouseButtons.Middle)
{
Console.WriteLine("鼠标滚轮键单击事件");
}
}
protected override void OnDoubleClick(EventArgs e)
{
base.OnDoubleClick(e);
Console.WriteLine("鼠标上任意按钮双击事件");
}
protected override void OnMouseDoubleClick(MouseEventArgs e)
{
base.OnMouseDoubleClick(e);
Console.WriteLine($"坐标:{e.Location}");
if (e.Button == MouseButtons.Left)
{
Console.WriteLine("鼠标左键双击事件");
}
if (e.Button == MouseButtons.Right)
{
Console.WriteLine("鼠标右键双击事件");
}
if (e.Button == MouseButtons.Middle)
{
Console.WriteLine("鼠标滚轮键双击事件");
}
}
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
Console.WriteLine($"坐标:{e.Location}");
if (e.Button == MouseButtons.Left)
{
Console.WriteLine("鼠标左键按下事件");
}
if (e.Button == MouseButtons.Right)
{
Console.WriteLine("鼠标右键按下事件");
}
if (e.Button == MouseButtons.Middle)
{
Console.WriteLine("鼠标滚轮键按下事件");
}
}
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
Console.WriteLine($"坐标:{e.Location}");
if (e.Button == MouseButtons.Left)
{
Console.WriteLine("鼠标左键释放事件");
}
if (e.Button == MouseButtons.Right)
{
Console.WriteLine("鼠标右键释放事件");
}
if (e.Button == MouseButtons.Middle)
{
Console.WriteLine("鼠标滚轮键释放事件");
}
}
protected override void OnMouseEnter(EventArgs e)
{
base.OnMouseEnter(e);
Console.WriteLine("鼠标进入控件的边框或工作区");
}
protected override void OnMouseHover(EventArgs e)
{
base.OnMouseHover(e);
Console.WriteLine("鼠标首次进入控件的边框或工作区后并首次停留后触发");
}
protected override void OnMouseLeave(EventArgs e)
{
base.OnMouseLeave(e);
Console.WriteLine("鼠标离开控件的边框或工作区");
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
Console.WriteLine($"坐标:{e.Location}");
if (e.Button == MouseButtons.Left)
{
Console.WriteLine("鼠标左键按下不释放时进行移动");
}
if (e.Button == MouseButtons.Right)
{
Console.WriteLine("鼠标右键按下不释放时进行移动");
}
if (e.Button == MouseButtons.Middle)
{
Console.WriteLine("鼠标滚轮键按下不释放时进行移动");
}
}
protected override void OnMouseWheel(MouseEventArgs e)
{
base.OnMouseWheel(e);
Console.WriteLine($"坐标:{e.Location}");
Console.WriteLine("用户滚动鼠标滚轮并且控件有焦点时触发此事件(只限滚轮才能触发)");
}
}
}
如果大家有兴趣,可以看一下这篇博客【WinForm.NET开发】使用鼠标事件,写的更详细点。