クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
.NET 開発
以前のバージョン
.NET Framework SDK 2.0
System.Windows.Forms
ListBox クラス

  低帯域幅での表示をオンにする
このページは次のバージョンについて記述しています。
Microsoft Visual Studio 2005/.NET Framework 2.0

その他のバージョンについては、以下の情報を参照してください。
.NET Framework クラス ライブラリ
ListBox クラス

項目のリストを表示する Windows コントロールを表します。

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

Visual Basic (宣言)
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _
Public Class ListBox
    Inherits ListControl
Visual Basic (使用法)
Dim instance As ListBox
C#
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] 
public class ListBox : ListControl
C++
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)] 
public ref class ListBox : public ListControl
J#
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */ 
public class ListBox extends ListControl
JScript
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) 
public class ListBox extends ListControl

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

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

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

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

コレクション クラス

ListBox での使用方法

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 プロパティを使用しても項目を追加できます。

メモメモ

基本 Windows フォーム上に ListBoxComboBox、または CheckedListBox が配置されており、派生 Windows フォームでこれらのコントロールの文字列コレクションを変更する場合は、基本 Windows フォームのこれらのコントロールの文字列コレクションを空にする必要があります。これらの文字列コレクションが空でない場合、他の Windows フォームを派生させると、文字列コレクションが読み取り専用になります。

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

Visual Basic
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++
void button1_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
   
   // Create an instance of the ListBox.
   ListBox^ listBox1 = gcnew 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( "Item {0}", x ) );

   }
   listBox1->EndUpdate();
   
   // Select three items from the ListBox.
   listBox1->SetSelected( 1, true );
   listBox1->SetSelected( 3, true );
   listBox1->SetSelected( 5, true );
   
   #if defined(DEBUG)
   // Display the second selected item in the ListBox to the console.
   System::Diagnostics::Debug::WriteLine( listBox1->SelectedItems[ 1 ] );
   
   // Display the index of the first selected item in the ListBox.
   System::Diagnostics::Debug::WriteLine( listBox1->SelectedIndices[ 0 ] );
   #endif
}

J#
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.set_Size(new System.Drawing.Size(200,100));
    listBox1.set_Location(new System.Drawing.Point(10,10));

    // Add the ListBox to the form.
    this.get_Controls().Add(listBox1);

    // Set the ListBox to display items in multiple columns.
    listBox1.set_MultiColumn(true);

    // Set the selection mode to multiple and extended.
    listBox1.set_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.get_Items().Add(("Item" + (new Integer(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.get_SelectedItems().get_Item(1).ToString());

    // Display the index of the first selected item in the ListBox.
    System.Diagnostics.Debug.WriteLine((new Integer
        (listBox1.get_SelectedIndices().get_Item(0))).ToString());
} //button1_Click
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);

   @if(@DEBUG)
   // 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
}
System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
       System.Windows.Forms.Control
         System.Windows.Forms.ListControl
          System.Windows.Forms.ListBox
             System.Windows.Forms.CheckedListBox
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。

.NET Framework

サポート対象 : 2.0、1.1、1.0

.NET Compact Framework

サポート対象 : 2.0、1.0
コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Processing
© 2009 Microsoft Corporation. All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker