複数項目コントロール : ListBox コントロールと ComboBox コントロールを使用する
更新 : 2007 年 11 月
このレッスンでは、リストの項目を追加および削除する方法について説明します。また、ユーザーがリストの項目を選択したときにアクションを実行する方法についても説明します。
ユーザーに選択肢の一覧を示す場合は、ListBox コントロールまたは ComboBox コントロールに項目のリストを表示できます。
ListBox コントロールを使用すると、複数の項目を同時に表示でき、長いリストでもスクロールできます。ユーザーが項目を選択すると、次の図のように、選択された項目がリストの中で強調表示されます。
ListBox コントロール
ComboBox コントロールは、テキスト ボックスとリスト ボックスが組み合わされたものです。コンボ ボックスは既定ではテキスト ボックスのように見えますが、ユーザーがドロップダウン矢印をクリックすると、リストが表示されます。ユーザーが項目を選択すると、次の図のように、選択された項目が強調表示されて既定の場所に表示されます。
ComboBox コントロール
リスト ボックスに項目を追加するプロセスと、コンボ ボックスに項目を追加するプロセスはよく似ています。項目を追加するには、ListBox コントロールの Add メソッドおよび ComboBox コントロールの Add メソッドを使用します。
やってみよう
リスト ボックスに項目を追加するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[Windows フォーム アプリケーション] をクリックし、[OK] をクリックします。
新しい Windows フォーム プロジェクトが開きます。
フォームに ListBox コントロールを追加します。既定の名前「ListBox1」はそのままにしておきます。
フォームをダブルクリックして、コード エディタで既定のイベント ハンドラを追加します。
Form_Load イベント ハンドラに次のコードを追加します。このコードは、リストに項目を追加します。
With Me.ListBox1.Items .Add("red") .Add("blue") .Add("green") .Add("yellow") .Add("orange") .Add("pink") .Add("brown") .Add("black") End With
F5 キーを押してプログラムを実行します。
フォームが開き、色の一覧の ListBox が表示されます。
プログラムを終了します。
選択項目の変更に応じてアクションを実行する
ユーザーがリスト ボックスで選択した項目に応じて、たとえば色を表示するなどのアクションを実行できます。そのためには、ListBox の SelectedIndexChanged イベント ハンドラにコードを記述します。ComboBox コントロールにも、対応するイベントがあります。
リストのどの項目が選択されたかを判断するには、SelectedItem プロパティを使用します。リストから選択された色をコントロールの BackColor プロパティに割り当てるには、Color オブジェクトの FromName メソッドを使用できます。
リスト ボックスで選択された色を表示するには
フォームに TextBox コントロールを追加します。既定の名前「TextBox1」はそのままにしておきます。
ListBox コントロールをダブルクリックして、コード エディタで既定のイベント ハンドラを追加します。
ListBox_SelectedIndexChanged イベント ハンドラに次のコードを追加します。このコードは、テキスト ボックスに色を表示します。ColorName 変数の値は、この変数をテキスト ボックスの BackColor プロパティに割り当てる前に設定してください。
Dim ColorName As String = CStr(ListBox1.SelectedItem) If ColorName IsNot Nothing Then Me.TextBox1.BackColor = _ System.Drawing.Color.FromName(ColorName) End If
F5 キーを押してプログラムを実行します。
フォームが開いたら、リスト ボックスの項目をクリックし、選択した色がテキスト ボックスに表示されることを確認します。
プログラムを終了します。
項目がリストにあるかどうかをチェックする
リストに項目を追加するときは、既存の項目との重複を避けたい場合がよくあります。たとえば、ユーザーがリスト ボックスの項目をダブルクリックすると、その項目がコンボ ボックスにコピーされるようにするとします。項目が既にコンボ ボックスに含まれている場合、その項目を重ねて追加することは望ましくありません。Contains メソッドを使用すると、項目が既にコンボ ボックスにあるかどうかを確認できます。リスト ボックスにも、対応する Contains メソッドがあります。
コンボ ボックスに項目を追加するには
フォームに ComboBox コントロールを追加します。既定の名前「ComboBox1」はそのままにしておきます。
フォームを右クリックし、コード エディタを開きます。次に、[コードの表示] をクリックします。
コード エディタで、[クラス名] ドロップダウン リストの ListBox1 をクリックします。
[メソッド名] ドロップダウン リストで DoubleClick をクリックして、イベント ハンドラを作成します。
ListBox1_DoubleClick イベント ハンドラに次のコードを追加します。このコードは、コンボ ボックスに項目を追加します。リスト ボックスが空の場合もあるので、項目を追加する前に、選択された項目が空でないことを確認する必要があります。
If ListBox1.SelectedItem IsNot Nothing Then If Not ComboBox1.Items.Contains(Me.ListBox1.SelectedItem) Then Me.ComboBox1.Items.Add(Me.ListBox1.SelectedItem) End If Me.ComboBox1.SelectedItem = Me.ListBox1.SelectedItem End If
F5 キーを押してプログラムを実行します。
リスト ボックスの項目をダブルクリックし、その項目がコンボ ボックスに 1 回だけ追加されることを確認します。
プログラムを終了します。
リスト ボックスから項目を削除する
Remove メソッドを使用すると、リスト ボックスから項目を削除できます。たとえば、リスト ボックスの項目をコンボ ボックスにコピーする代わりに、移動することができます。項目を移動するには、まずコンボ ボックスに項目を追加し、次にその項目をリスト ボックスから削除します。
リスト ボックスから項目を削除するには
ListBox_DoubleClick イベント ハンドラの End If ステートメントの上に、次のコードを追加します。
Me.ListBox1.Items.Remove(Me.ListBox1.SelectedItem)
F5 キーを押してプログラムを実行します。
リスト ボックスの項目をダブルクリックし、その項目がリスト ボックスから削除されてコンボ ボックスに追加されることを確認します。
次の手順
このレッスンでは、リストの項目を追加および削除する方法について説明しました。また、ユーザーが項目を選択したときにアクションを実行する方法についても説明しました。次のレッスンでは、日付と時刻を表示するコントロールの使用方法を説明します。
次のレッスン : 「日付の表示 : MonthCalendar コントロールと DateTimePicker コントロールを使用する」
参照
参照
ListBox コントロールの概要 (Windows フォーム)
ComboBox コントロールの概要 (Windows フォーム)