コントロール配列を使用するには

カテゴリ: VB.NET
投稿日時:2008/12/26 10:26:47
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
このエントリーをはてなブックマークに追加

スポンサード リンク