【问题标题】:MouseMove in a panel containing a Label在包含标签的面板中移动鼠标
【发布时间】:2013-04-14 03:00:46
【问题描述】:

我想移动面板以响应 MouseMove 事件,但如果鼠标悬停在面板内的标签上,则不会触发此事件。 (如果鼠标在面板内但在标签外,则会触发)。有没有简单的方法来解决这个问题?

我使用的是 Visual Basic 2010。

【问题讨论】:

  • 不是 .net 专家,但在 java 中,您可以将侦听器添加到标签中或覆盖低级别事件

标签: vb.net label panel mouseover


【解决方案1】:

找到了一种方法:

Private Sub MyControl_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
    'Something it does when clicked
End Sub

Private Sub MyControl_ControlAdded(ByVal sender As Object, ByVal e As System.Windows.Forms.ControlEventArgs) Handles Me.ControlAdded
    AddHandler e.Control.Click, AddressOf MyControl_Click
    AddHandler e.Control.ControlAdded, AddressOf MyControl_ControlAdded
End Sub

我只需要对 MouseOver 做同样的事情。

【讨论】:

    【解决方案2】:

    你可以让你自己的类派生自面板并使用这个http://msdn.microsoft.com/en-us/library/system.windows.forms.control.onmousemove.aspx

    Protected Overridable Sub OnMouseMove ( e As MouseEventArgs )
    

    这将使您可以访问面板上的所有鼠标移动事件

    【讨论】:

    • 被调用的方法是否在使用这个面板?添加记录器?在java中你需要启用这些你可以阅读这个类的文档吗?
    • 只有当鼠标在面板上但在面板内的标签之外时才会调用覆盖方法。所以我想不需要启用该方法,但问题仍然存在。
    • 一个解决方法是拥有一个单独的侦听器类并将其添加到标签和面板中。不过很奇怪。也许你应该在微软的 vb.net 论坛上发布这个,因为这里似乎没有任何 .net 人
    • 标签是您制作的面板的子标签?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 2021-04-03
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多