美文网首页
C#之鼠标事件

C#之鼠标事件

作者: 小羊爱学习 | 来源:发表于2024-05-08 08:48 被阅读0次
  • 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开发】使用鼠标事件,写的更详细点。

相关文章

网友评论

      本文标题:C#之鼠标事件

      本文链接:https://www.haomeiwen.com/subject/dbxdfjtx.html