次の方法で共有


ListBox.SelectedIndexCollection クラス

ListBox 内で選択されている項目のインデックスを格納するコレクションを表します。

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

System.Object
   System.Windows.Forms.ListBox.SelectedIndexCollection

Public Class ListBox.SelectedIndexCollection
   Implements IList, ICollection, IEnumerable
[C#]
public class ListBox.SelectedIndexCollection : IList, ICollection,
   IEnumerable
[C++]
public __gc class ListBox.SelectedIndexCollection : public IList,
   ICollection, IEnumerable
[JScript]
public class ListBox.SelectedIndexCollection implements IList,
   ICollection, IEnumerable

スレッドセーフ

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

解説

ListBox.SelectedIndexCollection クラスは、 ListBox 内で選択されている項目のインデックスを格納します。 ListBox.SelectedIndexCollection に格納されているインデックスは、 ListBox.ObjectCollection クラス内のインデックス位置です。 ListBox.ObjectCollection クラスの方は、 ListBox に表示されるすべての項目を格納します。

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

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

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

インデックス ObjectCollection 内の選択されている項目のインデックス
0 1
1 3
2 4

このクラスのプロパティとメソッドを使用すると、コレクションを使用してさまざまなタスクを実行できます。 Contains メソッドを使用すると、 ListBox.ObjectCollection クラス内のインデックス位置が、選択されたインデックスを格納する ListBox.SelectedIndexCollection のメンバかどうかを確認できます。このコレクションにインデックス位置があることがわかれば、 IndexOf メソッドを使用して、 ListBoxListBox.ObjectCollection 内の特定のインデックス位置が、このコレクション内のどこにあるかを判断できます。

使用例

[Visual Basic, C#, C++] FindString メソッドを使用し、 ListBox の項目内から検索テキストのすべてのインスタンスを探し出す方法を次の例に示します。この例では、 ListBox 内のすべての項目の連続検索を実行する際の開始検索インデックスを指定できるバージョンの FindString メソッドを使用しています。この例では、再帰的な検索を防ぐために、項目のリストの最後に到達した後、リストの先頭から FindString メソッドが検索を開始するときを判定する方法についても示します。 ListBox に項目が見つかったら、 SetSelected メソッドを使用して選択されます。

 
Private Sub FindAllOfMyString(ByVal searchString As String)
   ' Set the SelectionMode property of the ListBox to select multiple items.
   listBox1.SelectionMode = SelectionMode.MultiExtended

   ' Set our intial index variable to -1.
   Dim x As Integer = -1
   ' If the search string is empty exit.
   If searchString.Length <> 0 Then
      ' Loop through and find each item that matches the search string.
      Do
         ' Retrieve the item based on the previous index found. Starts with -1 which searches start.
         x = listBox1.FindString(searchString, x)
         ' If no item is found that matches exit.
         If x <> -1 Then
            ' Since the FindString loops infinitely, determine if we found first item again and exit.
            If ListBox1.SelectedIndices.Count > 0 Then
               If x = ListBox1.SelectedIndices(0) Then
                  Return
               End If
            End If
            ' Select the item in the ListBox once it is found.
            ListBox1.SetSelected(x, True)
         End If
      Loop While x <> -1
   End If
End Sub

[C#] 
private void FindAllOfMyString(string searchString)
{
   // Set the SelectionMode property of the ListBox to select multiple items.
   listBox1.SelectionMode = SelectionMode.MultiExtended;
   
   // Set our intial index variable to -1.
   int x =-1;
   // If the search string is empty exit.
   if (searchString.Length != 0)
   {
      // Loop through and find each item that matches the search string.
      do
      {
         // Retrieve the item based on the previous index found. Starts with -1 which searches start.
         x = listBox1.FindString(searchString, x);
         // If no item is found that matches exit.
         if (x != -1)
         {
            // Since the FindString loops infinitely, determine if we found first item again and exit.
            if (listBox1.SelectedIndices.Count > 0)
            {
               if(x == listBox1.SelectedIndices[0])
                  return;
            }
            // Select the item in the ListBox once it is found.
            listBox1.SetSelected(x,true);
         }
   
      }while(x != -1);
   }
}

[C++] 
private:
    void FindAllOfMyString(String* searchString)
    {
        // Set the SelectionMode property of the ListBox to select multiple items.
        listBox1->SelectionMode = SelectionMode::MultiExtended;

        // Set our intial index variable to -1.
        int x =-1;
        // If the search string is empty exit.
        if (searchString->Length != 0)
        {
            // Loop through and find each item that matches the search string.
            do
            {
                // Retrieve the item based on the previous index found. Starts with -1 which searches start.
                x = listBox1->FindString(searchString, x);
                // If no item is found that matches exit.
                if (x != -1)
                {
                    // Since the FindString loops infinitely, determine if we found first item again and exit.
                    if (listBox1->SelectedIndices->Count > 0)
                    {
                        if(x == listBox1->SelectedIndices->Item[0])
                            return;
                    }
                    // Select the item in the ListBox once it is found.
                    listBox1->SetSelected(x,true);
                }

            }while(x != -1);
        }
    }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Windows.Forms

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

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

参照

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