Addメソッド
CollectionクラスのAddメソッドを使えば、任意のオブジェクトをCollectionに追加することができます。
格納されるメンバーは、インデックス1から始まります。インデックス0には格納されません。たとえば、フォーム上のコントロールをコレクションに格納するには、まず、Collectionオブジェクトのインスタンスを生成します。
Dim ctl As New Collection()
あらかじめフォームに、テキストボックスコントロ-ル(TextBox1,TextBox2,TextBox3)を作成しておきます。メンバの追加は、Addメソッドを使います。引数には、オブジェクトとキー値(String型で一意にする)を指定します。
ctl.Add(TextBox1, "txt1") ctl.Add(TextBox2, "txt2") ctl.Add(TextBox3, "txt3")
コレクションの各メンバを参照するには、For Each … In … Nextステートメントを使用します。次の例では、テキストボックスのバックカラーを、Aquamarine色に変更しています。
Dim oneCtl As Control For Each oneCtl In ctl ' バックカラープロパティにAquamarine色を設定 oneCtl.BackColor = Color.Aquamarine Next
キー値を使っても、個々に同様な設定することができます。コントロールのプロパティの設定をする場合には、Ctype関数でControl型に変換します。
Dim ctl2 As Control ctl2 = CType(ctl.Item("txt1"), Control) ctl2.BackColor = Color.Red ctl2 = CType(ctl.Item("txt2"), Control) ctl2.BackColor = Color.Coral ctl2 = CType(ctl.Item("txt3"), Control) ctl2.BackColor = Color.Bisque
Removeメソッド
逆にRemoveメソッドを使えば、任意のオブジェクトを削除することができます。
コレクションメンバ-を削除する場合は、Removeメソッドを使います。先頭のメンバを削除する場合は次のようになります。なお、要素を削除するたびに、インデックッスは再設定され、最大インデックスが1だけ小さくなるので注意してください。
ctl.Remove(1) '注:Remove(0)ではない
または、キー値を使っても削除できます。要素数が少ない場合は、キー値で削除するほうが安全です。
ctl.Remove("txt2")
Countプロパティ
コレクションの要素数を返します。
Countプロパティを使って、すべての要素を削除するサンプルです。要素を削除するたびにインデックッスは再設定されるので、常に先頭の要素を削除するようにします。
Dim ctl As New Collection() ctl.Add(TextBox1, "txt1") ctl.Add(TextBox2, "txt2") ctl.Add(TextBox3, "txt3") Dim count As Integer = ctl.Count Dim i As Integer = 0 For i = 1 To Count ctl.Remove(1) Next