いまだに質問が多いので、コントロール配列の説明をしようと思います。
VB6では、コントロール配列はとても簡単に利用でき、イベントの処理も引数のIndexを利用することで容易に処理することができました。
しかしながら、VB.NETでは、コントロール配列という概念がなくなり、実装するのも面倒になりました。
ここで説明するのは、私が利用している方法であり、この方法が正規の方法ということではなく、あくまで参考にしていただければと思います。
■フォームコントロールに配置済みのコントロールをコントロール配列にする場合

このように配置されているボタンコントロールをコントロール配列にする場合を考えてみます。
コントロール配列といっても、目的により実装コードも変わってくるので、目的別に説明していきます。
■イベント処理をしたい
Private Sub Command1_Click(Index As Integer)
MsgBox "Index" & Index & "番のボタンが押されました"
End Sub
これは、VB6のイベントプロシージャですが、引数のIndexを利用することにより、それぞれのボタン別の処理を行うことができます。
これと同様のことを行うには、ボタンオブジェクトのNameまたは、Tagプロパティを利用して実装することができます。
Public Class Form1
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click
Dim btn As Button = CType(sender, Button)
MessageBox.Show(String.Format("ボタン名{0}がクリックされた", btn.Name))
End Sub
End Class
このようにすれば、イベントを処理することが可能です。ただ、ボタン名で判断するのはちょっと使いづらいので、Tagプロパティを利用するほうがいいでしょう。
フォームに配置されているボタンコントロールのプロパティのTagの値に1〜4を設定してください。
Public Class Form1
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click
Dim btn As Button = CType(sender, Button)
MessageBox.Show(String.Format("ボタン番号{0}がクリックされた", btn.Tag.ToString))
End Sub
End Class
こうすれば、VB6のようにIndexの変わりに利用することができます。
■コントロールをIndexで指定して利用する
VB6では、Command1(1).Captionなどというように、Indexでコントロールを指定して利用できました。これと同様の仕組みを実装するには、面倒ですが、配列に格納して利用するしかありません。
Public Class Form1
Private _Buttons As New List(Of Button)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
'配列に格納
Me._Buttons.Add(Me.Button1)
Me._Buttons.Add(Me.Button2)
Me._Buttons.Add(Me.Button3)
Me._Buttons.Add(Me.Button4)
'コントロールのText変更
For i As Integer = 0 To Me._Buttons.Count - 1
Me._Buttons(i).Text = "ボタン" & i.ToString
Next
End Sub
End Class
このようにすれば、配列番号でコントロールにアクセスできます。
■まとめ
コントロール配列は使えないことはないが、ちょっと面倒。