This question already has answers here:
Winform - determine if mouse has left user control

(4个答案)


7年前关闭。




我有2个面板(Panel1Panel2),其中Panel2放在Panel1内部

我的代码:
Private Sub Panel1_MouseLeave(sender As Object, e As EventArgs) Handles Panel1.MouseLeave
    MsgBox("Leave")
End Sub

当我的鼠标进入MsgBox时,会弹出Panel2

这是不合逻辑的,因为我的鼠标仍位于Panel1区域中。

出于事件目的,如何将Panel2视为与Panel1相同的区域?

最佳答案

考虑下图,

假设上面的图片代表着两个混凝土板(Two panels)放在彼此之上(浅灰色:panel1,深灰色:panel2)。

您是被要求站在浅灰色平板中位置1的人(Cursor),您会做什么,
首先,您将进入浅灰色平板。[panel1.mouseEnter event got fired],最后到达正位置1。同样,您再次要求在深灰色平板中站到位置2,
这次您将执行的操作是,先离开浅灰色平板[panel1.mouseLeave event got fired],然后进入深灰色平板[panel2.mouseEnter event got fired]。
你注意到了吗。?您已离开浅灰色平板以进入深灰色平板。

同样,在form内部,尤其是在controls堆栈上,一个控件的Mouse Enter应该是前一个控件的Mouse Leave

关于.net - 两个面板的MouseLeave事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15368985/

10-11 01:53