MouseEnter 和 MouseLeave 事件之间的敏感边框区域
本文关键字:边框 区域 之间 MouseLeave 事件 MouseEnter | 更新日期: 2023-09-27 18:35:37
我的表单上有一个PictureBox
控件,我为MouseEnter
和MouseLeave
编写了两个事件。在MouseEnter
花药上,PictureBox
进入表格并站在原件旁边,随着MouseLeave
,第二个PictureBox
消失了。
一切正常。除非光标位于原始PictureBox
的边界区域,否则MouseEnter
和MouseLeave
事件将重复运行。因此,第二个图像进入并离开表单,直到光标被移开。这让人眼前一亮
如何避免这种情况?
边框区域可能很棘手,特别是当您想要触发某些内容时,即使它只有几个像素,也可能会影响它。
一种经典情况是,当您想要通过单击拖动控件的边框来调整控件大小或移动控件时。除非您使用内部调用并简单地编写 mouseenter、-leave、-move、-down 和 -up,否则您最终可能会将控件从鼠标上移开,从而触发另一个 leave 事件。
这通常只发生在一组边框上,如左和上或右和下。
你需要检查你的代码是否有任何这样的影响,比如新PictureBox
将旧的推开几个像素,或者调整大小使其更小;即使是一个像素也会导致你看到的效果。
如果 MouseEnter 事件触发要绘制的边框,或者第一个图片框的大小以任何方式更改,则可能会导致您描述的效果。
可以在 MouseEnter 中添加对鼠标坐标的检查,以确保鼠标指针在事件触发之前足够远地进入控件的内部。 这将防止立即触发休假事件。