コントロールを検索する方法はさまざまな方法があります。その例を記載します。
特定のコントロール検索
'Panel内のコントロール(子コントロール)は検索できない
'Panel内を検索するには、Meをパネルオブジェクトにする
Dim ctrl As Control = Me.Controls("TextBox1")
If ctrl IsNot Nothing Then
MessageBox.Show("コントロール有り")
End If
または
'Panel内のコントロール(子コントロール)も検索できる
Dim ctrls As Control() = Me.Controls.Find("TextBox1", False)
If 0 < ctrls.Length Then
DirectCast(ctrls(0), TextBox).Text += "***"
End If
複数のコントロール検索
[方法1]
'ボタンのコントロールを検索する
'子コントロールは検索できない
For Each btn As Button In Me.Controls.OfType(Of Button)()
btn.Text = "***"
Next
-------------------------------------------------------------------------
[方法2]
'指定コントロールを検索する
Dim myButtons = {Button1, Button2, Button3, Button4, Button5, Button6}
For Each btn In myButtons
btn.Text = "***"
Next
-------------------------------------------------------------------------
[方法3]
For no As Integer = 1 To 10
Dim btns = Me.Controls.Find("button" & no, True)
If btns.Length > 0 Then
btns(0).Text = "***"
End If
Next
全コントロール検索
Public Function getAllControls(ByVal top As Control) As Control()
Dim ctrls As ArrayList = New ArrayList
For Each c As Control In top.Controls
ctrls.Add(c)
ctrls.AddRange(getAllControls(c))
Next
Return DirectCast(ctrls.ToArray(GetType(Control)), Control())
End Function
---------------------------------------------------------------------------
[呼び出し側]
Dim ctrls As Control() = getAllControls(Me)