ListBox.SelectedIndices プロパティ
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

コントロール内で現在選択されている項目のインデックスを格納している ListBox.SelectedIndexCollection。項目が現在選択されていない場合は、空の ListBox.SelectedIndexCollection が返されます。

複数選択の ListBox の場合、このプロパティは ListBox 内で選択されているすべての項目のインデックスを格納するコレクションを返します。単一選択の ListBox の場合、このプロパティは、ListBox 内で選択されている項目のインデックスだけを保持する、単一の要素を格納するコレクションを返します。コレクションの項目を操作する方法の詳細については、ListBox.SelectedIndexCollection のトピックを参照してください。
ListBox クラスでは、選択されている項目をさまざまな方法で参照できます。単一選択の ListBox 内で現在選択されている項目のインデックス位置を取得するには、SelectedIndices プロパティの代わりに、SelectedIndex プロパティを使用できます。項目のインデックス位置ではなく、ListBox 内で現在選択されている項目そのものを取得する場合は、SelectedItem プロパティを使用します。また、複数選択の ListBox 内で選択されているすべての項目を取得する場合は、SelectedItems プロパティを使用できます。

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
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); } }
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 ); } }
private void FindAllOfMyString(String searchString) { // Set the SelectionMode property of the ListBox to // select multiple items. listBox1.set_SelectionMode(SelectionMode.MultiExtended); // Set our intial index variable to -1. int x = -1; // If the search string is empty exit. if (searchString.get_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.get_SelectedIndices().get_Count() > 0) { if (x == listBox1.get_SelectedIndices().get_Item(0)) { return; } } // Select the item in the ListBox once it is found. listBox1.SetSelected(x, true); } } while (x != -1); } } //FindAllOfMyString } //Form1

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- ListBox.SelectedIndices プロパティのページへのリンク