嗨,我的程序中当前有这个 TablelayoutPanel 设置,用于创建稍后对应特定列和行的按钮网格:
'****INITIALISES TABLE LAYOUT INTO FORM******
Dim ColCount, RowCount As Integer
'Later change so that values are automatically calculated
ColCount = 5
RowCount = 5
'*********Copy and pasted from site as example, CHANGE LATER*******
Haztable = New TableLayoutPanel
Haztable.AutoScroll = True
Haztable.Dock = DockStyle.Fill
Haztable.ColumnCount = ColCount
Haztable.RowCount = RowCount
For rowNo As Integer = 0 To Haztable.RowCount - 1
For columnNo As Integer = 0 To Haztable.ColumnCount - 1
'Dim ctrl As Control = New Button
'ctrl.Text = String.Format("{0} {1},{2}", ctrl.GetType().Name, columnNo, rowNo)
'ctrl.Size = New Size(20, 20)
'Haztable.Controls.Add(ctrl, columnNo, rowNo)
Dim buttonname As String
buttonname = "B" & columnNo & rowNo
Dim button As Control = New Button
button.Size = New Size(70, 20)
button.Name = buttonname
button.Text = buttonname
Haztable.Controls.Add(button, columnNo, rowNo)
AddHandler button.Click, AddressOf buttonname_Click
Next
Next
Me.Controls.Add(Haztable)
Call buttonfind()
这一切都有效,创建了一个按钮网格,很像 Excel 电子表格的布局。
这些按钮根据它们的 XY 位置命名(例如,(1,1)中的按钮将被称为“B11”)但问题是我似乎无法弄清楚如何解决这些按钮,即
*如果单击 B(XY),则保存按下 X,Y 处的按钮的布尔值。
最好有一种算法来扫描并检查是否按下了任何按钮,而不是为每个按钮使用“选择案例”。我只会在设计器中创建按钮,但对于我的完整代码,我需要 1000 多个按钮,这似乎是一种低效的方法。