こんにちは、特定の列と行に後で対応するボタンのグリッドを作成するために、現在プログラムにこの 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 のボタンが押されたブール値が保存されます。
ボタンごとに「ケースの選択」を使用する代わりに、ボタンが押されたかどうかをスキャンして確認するアルゴリズムが 1 つあると便利です。デザイナーでボタンを作成するだけですが、完全なコードでは 1000 個以上のボタンが必要になり、非効率的な方法に思えます。