Private Sub Form1_Panel1MouseEnter(sender As Object, e As EventArgs) Handles Me.Panel1MouseEnter End Sub Private Sub Form1_Panel1MouseLeave(sender As Object, e As EventArgs) Handles Me.Panel1MouseLeave End Sub Private Event Panel1MouseEnter As EventHandler Private Event Panel1MouseLeave As EventHandler Private inside As Boolean = False Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Timer1.Interval = 50 Timer1.Start() End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick Dim p = MousePosition Dim cp = TableLayoutPanel1.Parent.PointToClient(p) If TableLayoutPanel1.Bounds.Contains(cp) Then If Not inside Then inside = True RaiseEvent Panel1MouseEnter(TableLayoutPanel1, EventArgs.Empty) End If Else If inside Then inside = False RaiseEvent Panel1MouseLeave(TableLayoutPanel1, EventArgs.Empty) End If End If End Sub
Protected Overrides Sub WndProc(ByRef m As Message) Const WM_NCHITTEST As Integer = &H84 Const HTTRANSPARENT As Integer = -1 If m.Msg = WM_NCHITTEST Then m.Result = New IntPtr(HTTRANSPARENT) Else MyBase.WndProc(m) End If End Sub
Private Sub TableLayoutPanel1_MouseClick(sender As Object, e As MouseEventArgs) Handles TableLayoutPanel1.MouseClick Dim b = TryCast(TableLayoutPanel1.GetChildAtPoint(e.Location), Button) If b Is Button1 AndAlso b.Visible AndAlso b.Enabled Then If Not b.Focused Then b.Focus() End If b.PerformClick() End If End Sub