我正在嘗試使用 PictureBoxes 創建一個網格。PictureBox 名稱是 pb11(用于 1,1 坐標)、pb21 等。
我正在嘗試做這樣的事情:
pb(variable) 或 (variable)
該變數將是例如 11 或在示例 2 pb11 中。
所以不必這樣做
If squaretobecoloured = 11 Then
pb11.BackColor = Color.Red
ElseIf squaretobecoloured = 12 Then
pb12.BackColor = Color.Red
End If
并繼續它 100 次
而不是我寧愿做這樣的事情
pb(squaretobecoloured).BackColor = Color.Red
只是為了澄清圖片框來自工具列,而不是在程式中創建。
uj5u.com熱心網友回復:
.Net 語言不會將字串轉換為這樣的變數。相反,您需要將現有的圖片框添加到陣列中。這將允許您按索引參考它們:
Dim pbGrid(,) As PictureBox = {
{pb11, pb12},
{pb21, pb22}
}
請注意,陣列將以 0 為索引而不是 1 為索引。現在您可以執行以下操作:
pbGrid(0, 1).BackColor = Color.Red
或者
Dim row As Integer = 0
Dim column As Integer = 1
pbGrid(row, column).BackColor = Color.Red
uj5u.com熱心網友回復:
使用Controls.Find()recurse選項很容易做到這一點:
squaretobecoloured = 11
Dim ctl As Control = Me.Controls.Find("pb" & squaretobecoloured, True).FirstOrDefault
If Not IsNothing(ctl) AndAlso TypeOf ctl Is PictureBox Then
Dim pb As PictureBox = DirectCast(ctl, PictureBox)
pb.BackColor = Color.Red
Else
MessageBox.Show("PB #" & squaretobecoloured & " not found!")
End If
如果您想將此與 Joel Coehoorn 提出的方法結合起來,那么您可以在Load()Form 事件中構建二維陣列,方法是使用 X、Y 值的嵌套回圈并按名稱搜索 PB,就像我所做的那樣,然后將找到的 PB 添加到 2D 陣列的正確位置。這樣,您可以通過表單上的 IDE 設計網格,代碼會在運行時自動找到它們,而不是將它們的名稱硬編碼到 2D 陣列中。
uj5u.com熱心網友回復:
試試這個:
For i = 0 To 100
Me.Controls("pb" & i).BackColor = Color.Red
Next
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/417753.html
標籤:
上一篇:無法創建物體框架代碼優先遷移
下一篇:for回圈中的字典無法按預期作業
