我创建了一个简单的TableLayoutPanel(6乘6),每个单元格中都有按钮。我有一个点击处理程序,只要按下任何按钮就会执行(在我的情况下,将按钮的颜色从红色变为绿色)
但现在我需要更改单击按钮旁边按钮的颜色(例如,当我点击按钮2 3时,按钮3 3也会改变颜色)。
有什么想法吗?
答案 0 :(得分:2)
您可以将点击处理程序上的Sender
参数转换为Control
,然后使用它来确定点击控件的位置。然后,您可以使用该位置来计算对象控件并检索对它们的引用。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim ctrl As Control = TryCast(sender, Control)
If ctrl IsNot Nothing Then
Dim pos As TableLayoutPanelCellPosition = TableLayoutPanel1.GetCellPosition(ctrl)
If pos.Row < (TableLayoutPanel1.RowCount - 1) Then
Dim nextCtrl As Control = TableLayoutPanel1.GetControlFromPosition(pos.Column, pos.Row + 1)
If nextCtrl IsNot Nothing Then
' do something with nextCtrl
nextCtrl.BackColor = Color.Red
End If
End If
End If
End Sub