VB.NETでコントロール配列を使用するには、ArrayListを使って以下のようにします。
まず、フォームにテキストボックスを5個配置し、名前をTextBox1、TextBox2・・・とします。
Public Class Form1
'コントロール配列用ArrayList
Dim arrTextBox As ArrayList
Sub New()
' この呼び出しは、Windows フォーム デザイナで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
'コントロール配列を作成する
arrTextBox = New ArrayList
For Each ctl As Control In Me.Controls
'"TextBox"で始まる名前のコントロールをArrayListに追加します。
If ctl.Name.StartsWith("TextBox") Then
arrTextBox.Add(ctl)
'イベントハンドラを関連付ける
AddHandler DirectCast(ctl, TextBox).TextChanged, AddressOf TextBox_TextChanged
End If
Next
End Sub
Private Sub TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
'全角に変換する
With DirectCast(sender, TextBox)
.Text = StrConv(.Text, VbStrConv.Wide)
.SelectionStart = .MaxLength
End With
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'コントロール配列をループ処理する
For Each txt As TextBox In arrTextBox
MessageBox.Show(txt.Name & ":" & txt.Text)
Next
End Sub
End Class
配列の順番が気になる場合は、コントロール配列を作成するところを以下のようにします。
Sub New()
' この呼び出しは、Windows フォーム デザイナで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
'コントロール配列を作成する
arrTextBox.Add(Me.TextBox1)
AddHandler TextBox1.TextChanged, AddressOf TextBox_TextChanged
arrTextBox.Add(Me.TextBox2)
AddHandler TextBox2.TextChanged, AddressOf TextBox_TextChanged
arrTextBox.Add(Me.TextBox3)
AddHandler TextBox3.TextChanged, AddressOf TextBox_TextChanged
arrTextBox.Add(Me.TextBox4)
AddHandler TextBox4.TextChanged, AddressOf TextBox_TextChanged
arrTextBox.Add(Me.TextBox5)
AddHandler TextBox5.TextChanged, AddressOf TextBox_TextChanged
End Sub