ListBox クラス

Windows リスト ボックス コントロールを表します。

この型のすべてのメンバの一覧については、ListBox メンバ を参照してください。

System.Object
   System.MarshalByRefObject
      System.ComponentModel.Component
         System.Windows.Forms.Control
            System.Windows.Forms.ListControl
               System.Windows.Forms.ListBox
                  System.Windows.Forms.CheckedListBox

Public Class ListBox
   Inherits ListControl
[C#]
public class ListBox : ListControl
[C++]
public __gc class ListBox : public ListControl
[JScript]
public class ListBox extends ListControl

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

ListBox コントロールを使用すると、ユーザーがクリックして選択できる項目のリストを表示できます。 SelectionMode プロパティを使用すると、 ListBox コントロールを単一選択または複数選択のリスト ボックスにすることができます。 ListBox には、項目を縦に並べたリストを表示するのではなく、複数の列に項目を表示できるようにする MultiColumn プロパティも用意されています。このプロパティを使用すると、より多くの項目をコントロールに表示でき、項目を表示するためにスクロールする手間を省くことができます。

通常、 ListBox に表示される項目を描画するタスクは Windows によって処理されます。 DrawMode プロパティを使用して、 MeasureItem イベントと DrawItem イベントを処理することで、Windows が提供する自動描画をオーバーライドし、項目を独自に描画できます。オーナー描画 ListBox コントロールを使用すると、高さが可変の項目やイメージを表示したり、リスト内の各項目のテキストに異なる色やフォントを適用したりできます。 HorizontalExtentGetItemHeightGetItemRectangle の各プロパティも、項目を独自に描画するときに役立ちます。

表示機能および選択機能の他に、 ListBox には、 ListBox に項目を効率よく追加したり、リストの項目に含まれるテキストを検索したりする機能も用意されています。 BeginUpdate メソッドおよび EndUpdate メソッドを使用すると、リストに項目を追加するたびにコントロールを再描画することなく、 ListBox に多数の項目を追加できます。 FindString メソッドおよび FindStringExact メソッドを使用すると、リスト内で特定の検索文字列を含んでいる項目を検索できます。

ItemsSelectedItemsSelectedIndices の各プロパティを使用すると、 ListBox によって使用される 3 つのコレクションにアクセスできます。 ListBox によって使用される 3 つのコレクションとコントロール内でのそれらの使用方法について次の表で説明します。

コレクション クラス リスト ボックス内での使用方法
ListBox.ObjectCollection ListBox コントロールに格納されているすべての項目を格納します。
ListBox.SelectedObjectCollection 選択されている項目のコレクションを格納します。このコレクションは、 ListBox コントロールに格納されている項目のサブセットになります。
ListBox.SelectedIndexCollection 選択されているインデックスのコレクションを格納します。このコレクションは、 ListBox.ObjectCollection のインデックスのサブセットになります。これらのインデックスは、選択されている項目を指定します。

ListBox クラスでサポートされる 3 つのインデックス付きコレクションを次の 3 つの例で示します。

ListBox の項目がどのように ListBox.ObjectCollection に格納されるかを示す例と、その ListBox 内での各項目の選択状態を次の表に示します。

インデックス 項目 ListBox 内の選択状態
0 object1 選択されていない
1 object2 選択されている
2 object3 選択されていない
3 object4 選択されている
4 object5 選択されている

上記の表で示した ListBox.ObjectCollection に基づいた ListBox.SelectedObjectCollection の内容を次の表に示します。

インデックス 項目
0 object2
1 object4
2 object5

上記の表で示した ListBox.ObjectCollection に基づいた ListBox.SelectedIndexCollection の内容を次の表に示します。

インデックス 項目のインデックス
0 1
1 3
2 4

ListBox.ObjectCollection クラスの Add メソッドを使用すると、項目を ListBox に追加できます。 Add メソッドは、 ListBox にメンバを追加するときに、任意のオブジェクトを受け入れます。オブジェクトが ListBox に追加されるときに、そのオブジェクト内のメンバの名前が DisplayMember プロパティに指定されていない限り、コントロールはオブジェクトの ToString メソッドで定義されたテキストを使用します。 ListBox.ObjectCollection クラスの Add メソッドを使用して項目を追加する他に、 ListControl クラスの DataSource プロパティを使用しても項目を追加できます。

使用例

複数の項目を複数列に表示し、リスト内で複数の項目を選択できる ListBox コントロールを作成する方法を次の例に示します。このサンプル コードは、 ListBox.ObjectCollection クラスの Add メソッドを使用して 50 の項目を ListBox に追加し、 SetSelected メソッドを使用してリストから 3 つの項目を選択します。このコードは、次に、 ListBox.SelectedObjectCollection コレクションの値 (SelectedItems プロパティを使用) と ListBox.SelectedIndexCollection の値 (SelectedIndices プロパティを使用) を表示します。この例では、コードが Form に含まれ、ここから呼び出されることを前提にしています。

 
Private Sub button1_Click(sender As Object, e As System.EventArgs)
    ' Create an instance of the ListBox.
    Dim listBox1 As New ListBox()
    ' Set the size and location of the ListBox.
    listBox1.Size = New System.Drawing.Size(200, 100)
    listBox1.Location = New System.Drawing.Point(10, 10)
    ' Add the ListBox to the form.
    Me.Controls.Add(listBox1)
    ' Set the ListBox to display items in multiple columns.
    listBox1.MultiColumn = True
    ' Set the selection mode to multiple and extended.
    listBox1.SelectionMode = SelectionMode.MultiExtended
    
    ' Shutdown the painting of the ListBox as items are added.
    listBox1.BeginUpdate()
    ' Loop through and add 50 items to the ListBox.
    Dim x As Integer
    For x = 1 To 50
        listBox1.Items.Add("Item " & x.ToString())
    Next x
    ' Allow the ListBox to repaint and display the new items.
    listBox1.EndUpdate()
    
    ' Select three items from the ListBox.
    listBox1.SetSelected(1, True)
    listBox1.SetSelected(3, True)
    listBox1.SetSelected(5, True)
       
    ' Display the second selected item in the ListBox to the console.
    System.Diagnostics.Debug.WriteLine(listBox1.SelectedItems(1).ToString())
    ' Display the index of the first selected item in the ListBox.
    System.Diagnostics.Debug.WriteLine(listBox1.SelectedIndices(0).ToString())
End Sub


[C#] 
private void button1_Click(object sender, System.EventArgs e)
{
   // Create an instance of the ListBox.
   ListBox listBox1 = new ListBox();
   // Set the size and location of the ListBox.
   listBox1.Size = new System.Drawing.Size(200, 100);
   listBox1.Location = new System.Drawing.Point(10,10);
   // Add the ListBox to the form.
   this.Controls.Add(listBox1);
   // Set the ListBox to display items in multiple columns.
   listBox1.MultiColumn = true;
   // Set the selection mode to multiple and extended.
   listBox1.SelectionMode = SelectionMode.MultiExtended;
 
   // Shutdown the painting of the ListBox as items are added.
   listBox1.BeginUpdate();
   // Loop through and add 50 items to the ListBox.
   for (int x = 1; x <= 50; x++)
   {
      listBox1.Items.Add("Item " + x.ToString());
   }
   // Allow the ListBox to repaint and display the new items.
   listBox1.EndUpdate();
      
   // Select three items from the ListBox.
   listBox1.SetSelected(1, true);
   listBox1.SetSelected(3, true);
   listBox1.SetSelected(5, true);

   // Display the second selected item in the ListBox to the console.
   System.Diagnostics.Debug.WriteLine(listBox1.SelectedItems[1].ToString());
   // Display the index of the first selected item in the ListBox.
   System.Diagnostics.Debug.WriteLine(listBox1.SelectedIndices[0].ToString());             
}


[C++] 
private:
void button1_Click(Object* /*sender*/, System::EventArgs* /*e*/)
{
   // Create an instance of the ListBox.
   ListBox* listBox1 = new ListBox();
   // Set the size and location of the ListBox.
   listBox1->Size = System::Drawing::Size(200, 100);
   listBox1->Location = System::Drawing::Point(10,10);
   // Add the ListBox to the form.
   this->Controls->Add(listBox1);
   // Set the ListBox to display items in multiple columns.
   listBox1->MultiColumn = true;
   // Set the selection mode to multiple and extended.
   listBox1->SelectionMode = SelectionMode::MultiExtended;
 
   // Shutdown the painting of the ListBox as items are added.
   listBox1->BeginUpdate();
   // Loop through and add 50 items to the ListBox.
   for (int x = 1; x <= 50; x++)
   {
      listBox1->Items->Add(String::Format( S"Item {0}", __box(x)));
   }
   // Allow the ListBox to repaint and display the new items.
   listBox1->EndUpdate();
      
   // Select three items from the ListBox.
   listBox1->SetSelected(1, true);
   listBox1->SetSelected(3, true);
   listBox1->SetSelected(5, true);

   // Display the second selected item in the ListBox to the console.
   System::Diagnostics::Debug::WriteLine(listBox1->SelectedItems->Item[1]);
   // Display the index of the first selected item in the ListBox.
   System::Diagnostics::Debug::WriteLine( __box(listBox1->SelectedIndices->Item[0]));             
}


[JScript] 
private function button1_Click(sender : Object, e : System.EventArgs)
{
   // Create an instance of the ListBox.
   var listBox1 : ListBox = new ListBox();
   // Set the size and location of the ListBox.
   listBox1.Size = new System.Drawing.Size(200, 100);
   listBox1.Location = new System.Drawing.Point(10,10);
   // Add the ListBox to the form.
   this.Controls.Add(listBox1);
   // Set the ListBox to display items in multiple columns.
   listBox1.MultiColumn = true;
   // Set the selection mode to multiple and extended.
   listBox1.SelectionMode = SelectionMode.MultiExtended;
 
   // Shutdown the painting of the ListBox as items are added.
   listBox1.BeginUpdate();
   // Loop through and add 50 items to the ListBox.
   for (var x : int = 1; x <= 50; x++)
   {
      listBox1.Items.Add("Item " + x.ToString());
   }
   // Allow the ListBox to repaint and display the new items.
   listBox1.EndUpdate();
      
   // Select three items from the ListBox.
   listBox1.SetSelected(1, true);
   listBox1.SetSelected(3, true);
   listBox1.SetSelected(5, true);

   // Display the second selected item in the ListBox to the console.
   System.Diagnostics.Debug.WriteLine(listBox1.SelectedItems[1].ToString());
   // Display the index of the first selected item in the ListBox.
   System.Diagnostics.Debug.WriteLine(listBox1.SelectedIndices[0].ToString());             
}

必要条件

名前空間: System.Windows.Forms

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: System.Windows.Forms (System.Windows.Forms.dll 内)

参照

ListBox メンバ | System.Windows.Forms 名前空間