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 メソッドを使用して、 ListBox の ListBox.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 名前空間