Collectionクラス [VB.NET]

Visual Basic.NET ADO.NETデータベースプログラミング

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