投稿者 kojiro  (社会人) 投稿日時 2020/3/31 14:39:47
るきおさんの回答で、完全に動作しました。驚きました。魔界さんのおっしゃる点は、確認しておりませんん。ごめんなさい。以下のように、tabを作成し、その中にボタンを配置して、同様に記述してみました。
Imports System.Windows.Forms
Imports Microsoft.Win32
Imports System.Drawing
Imports System.Drawing.Imaging
Public Class Form1
    Dim button As System.Windows.Forms.Button
    Dim btnar As New List(Of Button)
    Dim tb As New System.Windows.Forms.TabControl
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim tb As New System.Windows.Forms.TabControl
        Dim i As Integer
        With tb
            .Name = "TabControl1"
            .Left = 20 '470
            .Top = 20
            .Width = 250
            .Height = 220
            .Visible = True
        End With
        Controls.Add(tb)
        For i = 0 To 2
            Dim tab As New TabPage
            tab.UseVisualStyleBackColor = True '色が白くなります
            tab.Text = CStr(i)  ' Cell_x2)   '"tab" & CStr(i + 1) 'TabPageの表題です
            tab.Name = "tabpage" & CStr(i + 1) 'TabPageに名前を付けます
            'tb.Add(tab) 'TabPageをリストにします
            Me.Controls("TabControl1").Controls.Add(tab) 'TabPageをコントロールにAddします
        Next

        Dim str_c As String
        For i = 0 To 2
            Dim tab_name As String = "tabpage" & CStr(i + 1)
            For k = 1 To 3    '************* 7
                '------------------------------------------------------
                button = New System.Windows.Forms.Button()
                str_c = CStr(i) & CStr(k)
                button.Name = str_c
                button.Text = str_c
                button.Location = New Point(20 + 70 * (k - 1), 50)
                button.Size = New System.Drawing.Size(70, 20)
                btnar.Add(button)
                tb.Controls(tab_name).Controls.Add(button)
                AddHandler button.Click, AddressOf Me.Button_Click 'system_SessionEnding  'EventHandler
                AddHandler button.MouseUp, AddressOf Button_MouseUp 'system_SessionEnding  'EventHandler
                AddHandler button.MouseDown, AddressOf Button_MouseDown 'system_SessionEnding  'EventHandler

            Next
        Next
    End Sub
    Private Sub Button_Click(sender As Object, e As EventArgs)
        'クリックされたボタンのNameを表示する
        MessageBox.Show(CType(sender, System.Windows.Forms.Button).Name)
    End Sub
    Private Sub Button_MouseUp(sender As Object, e As MouseEventArgs)
        'イベントを発生させたボタンを取得します。 
        'これはこの瞬間のマウスの座標とは関係なくMouseDownを発生させたボタンを同じです。 
        Dim eventSourceControl As Button = DirectCast(sender, Button)

        'この瞬間のマウスの位置の下にあるコントロールを取得します。 
        Dim xInParent As Integer = e.Location.X + eventSourceControl.Location.X
        Dim yInParent As Integer = e.Location.Y + eventSourceControl.Location.Y
        Dim locationInParent As New Point(xInParent, yInParent)
        Dim controlMouseOn As Control = Me.GetChildAtPoint(locationInParent)
        'マウスの下に何かコントロールがあるのであれば、それの背景色を変更します。 
        If controlMouseOn IsNot Nothing Then
            controlMouseOn.BackColor = Color.Blue
        End If
    End Sub

    Private Sub Button_MouseDown(sender As Object, e As MouseEventArgs)
        DirectCast(sender, Button).BackColor = Color.Red
    End Sub
End Class

MouseDownで赤くはなるのですが、MouseUpで青くはなりません。おっしゃるように、 Me.GetChildAtPoint(locationInParent)が動いていないのかもしれません。