Visual Basic как ссылаться на динамически созданную кнопку

Мой код создает 40 кнопок динамически я могу изменить свойства, если кнопка нажата с помощью sender, но как я могу ссылаться на них, когда я нажимаю другую кнопку

Public Sub loadButtons()


    For i As Integer = 0 To 39

        If i > 19 Then
            gap = i + 10
        Else
            gap = i
        End If
        Dim B As New Button
        Form1.panSeats.Controls.Add(B)

        B.Height = 30
        B.Width = 37
        B.Left = ((i Mod 10) * 47) + 322
        B.Top = ((gap  10) * 31) + 114

        B.Text = Chr((i  10) + Asc("A")) & i Mod 10 + 1
        B.Tag = i
        Buttons.Add(B.Text, B)
        If isBooked(i) = True Then


            B.BackColor = Color.Red
        Else
            B.BackColor = Color.Orange
        End If
        AddHandler B.Click, AddressOf Form1.Button_Click
    Next

End Sub

Я хочу, чтобы иметь возможность изменить backcolor B не объявлен пробовали с помощью кнопки.тег, но не работает

Private Sub btnTestCancel_Click(sender As Object, e As EventArgs) Handles btnTestCancel.Click

    B.BackColor = Color.Orange
End Sub

1 ответ

  1. AddhandlerОператор связывает события для всех динамически добавляемых кнопок. senderОбъект тот, на который нажимается, нам просто нужно распаковать его.

    AddHandler B.Click, AddressOf btns_Click
    
    Private Sub btns_Click(sender As Object, e As EventArgs) 'no handles clause needed
      Dim btn As Button = DirectCast(sender, Button)
      btn.BackColor = Color.Orange
    End Sub