鼠标离开事件与两个面板

3

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

我的代码:

Private Sub Panel1_MouseLeave(sender As Object, e As EventArgs) Handles Panel1.MouseLeave
    MsgBox("Leave")
End Sub

当鼠标进入Panel2时,MsgBox弹出。
这是不合逻辑的,因为我的鼠标仍然位于Panel1的区域内。
为了事件处理,如何使Panel2被视为与Panel1相同的区域?

或者说这个更好一些:https://dev59.com/onM_5IYBdhLWcg3w8IA2 尽管,答案中的代码有点缺少工作部分。 - Gman
1个回答

2
考虑以下图示:
假设上图表示两个混凝土板块(Two panels),一个放在另一个上面(浅灰色:panel1,深灰色:panel2)。
假设你是被要求站在浅灰色板块的位置1上的人(Cursor),你会怎么做?首先,你需要进入浅灰色板块中[panel1.mouseEnter事件被触发],最后到达位置1。同样地,如果让你站在深灰色板块的位置2上,这次你该怎么做呢?你需要离开浅灰色板块[panel1.mouseLeave事件被触发],然后进入深灰色板块[panel2.mouseEnter事件被触发]。注意,你需要离开浅灰色板块才能进入深灰色板块。
同样地,在一个form中,特别是在一堆controls中,一个控件的Mouse Enter应该是前一个控件的Mouse Leave

并不完全正确。您可以(使用笔输入,在屏幕上方悬停笔,非常快速地)将鼠标移动到位置二,这样panel1就不会有任何事件。 - Gman
1
@Gman 你说得对,这是一个已知的问题。但是OP的要求是想知道,“为什么Panel1的离开事件被调用,但鼠标仍然在里面”。顺便说一下,我认为他需要一个逻辑上的答案。 :) - Rajaprabhu Aravindasamy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接