Protected Overrides Sub OnLoad(ByVal e As System.EventArgs) MyBase.OnLoad(e) For Each c As Control In Me.Controls AddHandler c.MouseMove, AddressOf Chileds_MouseMove AddHandler c.MouseLeave, AddressOf Chileds_MouseLeave Next End Sub
Private Sub Chileds_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Dim pt As Point = MousePositionByClientCoordinate() Dim ev As New MouseEventArgs(e.Button, e.Clicks, pt.X, pt.Y, e.Delta) MyClass.OnMouseEnter(New EventArgs) Me.OnMouseMove(ev) End Sub
Private Sub Chileds_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) MyClass.OnMouseLeave(New EventArgs) End Sub
Private Function MousePositionByClientCoordinate() As Point Return Me.PointToClient(Control.MousePosition) End Function
Private Function IsMouseOnMe() As Boolean Dim pt As Point = MousePositionByClientCoordinate() Return Me.ClientRectangle.Contains(pt) End Function
Private mMouseAlreadyEnter As Boolean = False Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs) If mMouseAlreadyEnter = False Then mMouseAlreadyEnter = True MyBase.OnMouseEnter(e) End If End Sub
Protected Overrides Sub OnMouseLeave(ByVal e As System.EventArgs) If IsMouseOnMe() = False Then mMouseAlreadyEnter = False MyBase.OnMouseLeave(e) End If End Sub