我的表单上有一个PictureBox
控件,我已为MouseEnter
和MouseLeave
编写了两个事件。在MouseEnter
花药PictureBox
上输入表单并放在原始文件旁边,MouseLeave
第二个PictureBox
就行了。
一切正常。除非光标位于原始PictureBox
的边框区域,否则会重复运行MouseEnter
和MouseLeave
个事件。因此第二张图像进入并离开表格,直到光标被带走。这让人感到奇怪。
我该如何避免这种情况?
答案 0 :(得分:1)
边框区域可能很棘手,尤其是当您想要触发可能影响它的东西时,即使它只有几个像素。
一种典型情况是,您希望通过单击在其边框处拖动控件来调整大小或移动控件。除非您使用内部调用并简单地编写mouseenter,-leave,-move,-down和-up,否则您最终可能会使用例如将控件移离鼠标,从而触发另一个离开事件。
这通常只发生在一组边框上,例如左边和上边或右边和底边。
您需要检查代码是否存在任何此类影响,例如新的PictureBox
将旧的推动几个像素或者调整大小使其变小;甚至一个像素也可以产生你看到的效果..
答案 1 :(得分:0)
如果MouseEnter事件触发要绘制的边框,或者要以任何方式更改第一个PictureBox的大小,则可能会导致您描述的效果。
您可以在MouseEnter中对鼠标坐标添加一个检查,以确保鼠标指针在事件触发前进入控件的内部足够远。这样可以防止立即触发离开事件。