您好我現在有這個TableLayoutPanel中安裝在我的計劃,以創建按鈕的一個網格,將在後面對應一個特定的列和行:VB.Net:使用和處理按鈕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處被按下。
用一種算法掃描並檢查是否有任何按鈕已被按下,而不是每個按鈕使用「Select Case」會很好。 我只是在設計器中創建按鈕,但對於我的完整代碼,我將需要1000多個按鈕,這似乎是一種效率低下的方式。
@Joe的選擇案例是一種避免大規模的If語句的方法。你可能想看看文檔[這裏](http://msdn.microsoft.com/en-us/library/cy37t14y(v = vs.100).aspx) –
你應該創建一個新的類並繼承Button和包括像ClickCount,行,列等變量... – theGD
@Mark這是非常有用的謝謝你。有沒有辦法將所有這些「Select Case」語句合併到一個語句中,這個語句只檢查是否有任何按鈕被按下,如果是,它是在哪裏(X,Y)以及按鈕文本是什麼。對不起,我缺乏理解。 – Joe