MouseEnter 和 MouseLeave 事件之间的敏感边框区域

本文关键字:边框 区域 之间 MouseLeave 事件 MouseEnter | 更新日期: 2023-09-27 18:35:37

我的表单上有一个PictureBox控件,我为MouseEnterMouseLeave编写了两个事件。在MouseEnter花药上,PictureBox进入表格并站在原件旁边,随着MouseLeave,第二个PictureBox消失了。

一切正常。除非光标位于原始PictureBox的边界区域,否则MouseEnterMouseLeave事件将重复运行。因此,第二个图像进入并离开表单,直到光标被移开。这让人眼前一亮

如何避免这种情况?

MouseEnter 和 MouseLeave 事件之间的敏感边框区域

边框区域可能很棘手,特别是当您想要触发某些内容时,即使它只有几个像素,也可能会影响它。

一种经典情况是,当您想要通过单击拖动控件的边框来调整控件大小或移动控件时。除非您使用内部调用并简单地编写 mouseenter、-leave、-move、-down 和 -up,否则您最终可能会将控件从鼠标上移开,从而触发另一个 leave 事件。

这通常只发生在一组边框上,如左和上或右和下。

你需要检查你的代码是否有任何这样的影响,比如新PictureBox将旧的推开几个像素,或者调整大小使其更小;即使是一个像素也会导致你看到的效果。

如果 MouseEnter 事件触发要绘制的边框,或者第一个图片框的大小以任何方式更改,则可能会导致您描述的效果。

可以在 MouseEnter 中添加对鼠标坐标的检查,以确保鼠标指针在事件触发之前足够远地进入控件的内部。 这将防止立即触发休假事件。