詳細情報 : コレクションで For Each...Next ループを使用する
更新 : 2007 年 11 月
このレッスンでは、For Each...Next ループを使用して、コレクションをループ処理する方法を説明します。
前のレッスンでは、For...Next ループを使用して、コード ブロックを指定した回数だけ実行する方法を説明しました。Visual Basic のコレクション オブジェクトは、For Each...Next ループという特殊なループをサポートしています。これは、あらかじめ設定した回数だけブロックを実行するのではなく、コレクション内の各要素に対してコード ブロックを実行するループです。
For Each...Next ループを追加する
前のレッスンでは、チーム コレクションに含まれる Players オブジェクトの Position プロパティの値を、手動で ComboBox コントロールに追加しました。この方法も 1 つの例ではありますが、最良の方法ではありません。新しい選手を追加するたびに、ComboBox コントロールの Items コレクションも更新する必要があるからです。
これを処理するためのより良い方法は、For Each...Next ループを使用して team コレクションをループ処理することにより、Position の値を Items コレクションに追加することです。
For...Next ループでは、まずカウンタ変数を宣言する必要がありました。これに対して For Each...Next ループでは、まずオブジェクト変数を宣言する必要があります。For Each...Next ループのコード例を次に示します。
Dim player As Persons.Players
For Each player In team
ComboBox1.Items.Add(player.Position)
Next
この場合、Players の数がどれだけ多くても、チーム コレクションに含まれる各 Players について ComboBox1.Items.Add メソッドが 1 回ずつ実行され、Position の値が一覧に追加されます。
やってみよう
コレクションをループ処理するには
前のレッスンで使用した Persons プロジェクトを開きます。前のレッスンを終了していない場合は、「コレクションを使用して複数のオブジェクトを管理する」に戻って手順を完了します。
ソリューション エクスプローラで [PlayerTest] プロジェクトの [Form1.vb] ノードをクリックし、[表示] メニューの [デザイナ] をクリックします。
ComboBox コントロールを選択します。次に、[プロパティ] ウィンドウで、Items プロパティを選択し、[...] ボタンをクリックします。
文字列コレクション エディタ1 で、既存の 4 つのエントリを削除して [OK] をクリックします。
フォームをダブルクリックしてコード エディタを開きます。
コード エディタで、宣言セクション (team の宣言の下) に次のコードを追加します。
Dim player As Persons.Players For Each player In team ComboBox1.Items.Add(player.Position) Next
F5 キーを押してプログラムを実行します。ドロップダウン リストでポジションを選択します。そのポジションの選手がメッセージ ボックスに表示されます。
次の手順
このレッスンでは、コレクションで For Each...Next ループを使用しました。次のレッスンからは、別の種類のオブジェクトであるユーザー コントロールを作成します。
次のレッスン : 「表示されるオブジェクト : 初めてのユーザー コントロールの作成」
参照
処理手順
参照
For Each...Next ステートメント (Visual Basic)