Freigeben über


ListView.SelectedIndexCollection-Klasse

Stellt die Auflistung dar, die die Indizes der in einem ListView-Steuerelement ausgewählten Elemente enthält.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

Syntax

'Declaration
Public Class SelectedIndexCollection
    Implements IList, ICollection, IEnumerable
'Usage
Dim instance As SelectedIndexCollection
public class SelectedIndexCollection : IList, ICollection, IEnumerable
public ref class SelectedIndexCollection : IList, ICollection, IEnumerable
public class SelectedIndexCollection implements IList, ICollection, 
    IEnumerable
public class SelectedIndexCollection implements IList, ICollection, 
    IEnumerable

Hinweise

Eine ListView.SelectedIndexCollection speichert die Indizes der ausgewählten Elemente in einem ListView-Steuerelement. Die in der ListView.SelectedIndexCollection gespeicherten Indizes sind Indexpositionen in der ListView.ListViewItemCollection. Die ListView.ListViewItemCollection enthält alle im ListView-Steuerelement angezeigten Elemente.

Die folgende Tabelle ist ein Beispiel dafür, wie die ListView.ListViewItemCollection die Elemente der ListView speichert und deren Auswahlzustand in einer Muster-ListView anzeigt.

Index

Element

Auswahlzustand in ListView

0

Element1

Nicht ausgewählt

1

Element2

Ausgewählt

2

Element3

Nicht ausgewählt

3

Element4

Ausgewählt

4

Element5

Ausgewählt

Auf der Grundlage des Beispiels für die ListView.ListViewItemCollection in der vorausgegangenen Tabelle veranschaulicht die folgende Tabelle die Darstellung der ListView.SelectedIndexCollection.

Index

Index des ausgewählten Elements der ListViewItemCollection

0

1

1

3

2

4

Mit den Methoden und Eigenschaften dieser Klasse können Sie eine Vielzahl von Aufgaben mit der Auflistung durchführen. Mithilfe der Contains-Methode können Sie bestimmen, ob eine Indexposition in der ListView.ListViewItemCollection zu den Indizes gehört, die in der ListView.SelectedIndexCollection gespeichert sind. Wenn Sie wissen, dass sich das Element in der Auflistung befindet, können Sie mithilfe der IndexOf-Methode die Indexposition in der ListView.SelectedIndexCollection bestimmen.

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie die Member SelectedIndices, SelectedIndexChanged und HeaderStyle sowie die ListView.SelectedIndexCollection-Klasse verwendet werden. Fügen Sie zum Ausführen dieses Beispiels den folgenden Code in ein Formular ein, das das ListView-Objekt ListView1 und die TextBoxTextBox1 enthält. Rufen Sie die InitializeListView-Methode aus dem Konstruktor oder dem Load-Ereignishandler des Formulars auf. In diesem Beispiel muss der Ereignishandler dem SelectedIndexChanged-Ereignis richtig zugeordnet sein.

    ' This method adds two columns to the ListView, setting the Text 
    ' and TextAlign, and Width properties of each ColumnHeader.  The 
    ' HeaderStyle property is set to NonClickable since the ColumnClick 
    ' event is not handled.  Finally the method adds ListViewItems and 
    ' SubItems to each column.
    Private Sub InitializeListView()
        Me.ListView1 = New System.Windows.Forms.ListView
        Me.ListView1.BackColor = System.Drawing.SystemColors.Control
        Me.ListView1.Dock = System.Windows.Forms.DockStyle.Top
        Me.ListView1.Location = New System.Drawing.Point(0, 0)
        Me.ListView1.Name = "ListView1"
        Me.ListView1.Size = New System.Drawing.Size(292, 130)
        Me.ListView1.TabIndex = 0
        Me.ListView1.View = System.Windows.Forms.View.Details
        Me.ListView1.MultiSelect = True
        Me.ListView1.HideSelection = False
        ListView1.HeaderStyle = ColumnHeaderStyle.Nonclickable
        Dim columnHeader1 As New ColumnHeader
        With columnHeader1
            .Text = "Breakfast Item"
            .TextAlign = HorizontalAlignment.Left
            .Width = 146
        End With
        Dim columnHeader2 As New ColumnHeader
        With columnHeader2
            .Text = "Price Each"
            .TextAlign = HorizontalAlignment.Center
            .Width = 142
        End With

        Me.ListView1.Columns.Add(columnHeader1)
        Me.ListView1.Columns.Add(columnHeader2)
        Dim foodList() As String = New String() {"Juice", "Coffee", _
            "Cereal & Milk", "Fruit Plate", "Toast & Jelly", _
            "Bagel & Cream Cheese"}
        Dim foodPrice() As String = New String() {"1.09", "1.09", _
            "2.19", "2.49", "1.49", "1.49"}
        Dim count As Integer
        For count = 0 To foodList.Length - 1
            Dim listItem As New ListViewItem(foodList(count))
            listItem.SubItems.Add(foodPrice(count))
            ListView1.Items.Add(listItem)
        Next
        Me.Controls.Add(Me.ListView1)
    End Sub

...
    ' Uses the SelectedIndices property to retrieve and tally the price of  
    ' the selected menu items.
    Private Sub ListView1_SelectedIndexChanged_UsingIndices _
        (ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles ListView1.SelectedIndexChanged

        Dim indexes As ListView.SelectedIndexCollection = _
            Me.ListView1.SelectedIndices
        Dim index As Integer
        Dim price As Double = 0.0
        For Each index In indexes
            price += Double.Parse(Me.ListView1.Items(index).SubItems(1).Text)
        Next

        ' Output the price to TextBox1.
        TextBox1.Text = CType(price, String)
    End Sub
 // This method adds two columns to the ListView, setting the Text 
    // and TextAlign, and Width properties of each ColumnHeader.  The 
    // HeaderStyle property is set to NonClickable since the ColumnClick 
    // event is not handled.  Finally the method adds ListViewItems and 
    // SubItems to each column.
    private void InitializeListView()
    {
        this.ListView1 = new System.Windows.Forms.ListView();
        this.ListView1.BackColor = System.Drawing.SystemColors.Control;
        this.ListView1.Dock = System.Windows.Forms.DockStyle.Top;
        this.ListView1.Location = new System.Drawing.Point(0, 0);
        this.ListView1.Name = "ListView1";
        this.ListView1.Size = new System.Drawing.Size(292, 130);
        this.ListView1.TabIndex = 0;
        this.ListView1.View = System.Windows.Forms.View.Details;
        this.ListView1.MultiSelect = true;
        this.ListView1.HideSelection = false;
        this.ListView1.HeaderStyle = ColumnHeaderStyle.Nonclickable;
        
        ColumnHeader columnHeader1 = new ColumnHeader();
        columnHeader1.Text = "Breakfast Item";
        columnHeader1.TextAlign = HorizontalAlignment.Left;
        columnHeader1.Width = 146;

        ColumnHeader columnHeader2 = new ColumnHeader();
        columnHeader2.Text = "Price Each";
        columnHeader2.TextAlign = HorizontalAlignment.Center;
        columnHeader2.Width = 142;
  
        this.ListView1.Columns.Add(columnHeader1);
        this.ListView1.Columns.Add(columnHeader2);

        string[] foodList = new string[]{"Juice", "Coffee", 
            "Cereal & Milk", "Fruit Plate", "Toast & Jelly", 
            "Bagel & Cream Cheese"};
        string[] foodPrice = new string[]{"1.09", "1.09", "2.19", 
            "2.49", "1.49", "1.49"};
        
        for(int count=0; count < foodList.Length; count++)
        {
            ListViewItem listItem = new ListViewItem(foodList[count]);
            listItem.SubItems.Add(foodPrice[count]);
            ListView1.Items.Add(listItem);
        }
        this.Controls.Add(ListView1);
    }
    

...
   // Uses the SelectedIndices property to retrieve and tally the  
    // price of the selected menu items.
    private void ListView1_SelectedIndexChanged_UsingIndices(
        object sender, System.EventArgs e)
    {

        ListView.SelectedIndexCollection indexes = 
            this.ListView1.SelectedIndices;
        
        double price = 0.0;
        foreach ( int index in indexes )
        {
            price += Double.Parse(
                this.ListView1.Items[index].SubItems[1].Text);
        }

        // Output the price to TextBox1.
        TextBox1.Text =  price.ToString();
    }
   // This method adds two columns to the ListView, setting the Text 
   // and TextAlign, and Width properties of each ColumnHeader.  The 
   // HeaderStyle property is set to NonClickable since the ColumnClick 
   // event is not handled.  Finally the method adds ListViewItems and 
   // SubItems to each column.
   void InitializeListView()
   {
      this->ListView1 = gcnew System::Windows::Forms::ListView;
      this->ListView1->BackColor = System::Drawing::SystemColors::Control;
      this->ListView1->Dock = System::Windows::Forms::DockStyle::Top;
      this->ListView1->Location = System::Drawing::Point( 0, 0 );
      this->ListView1->Name = "ListView1";
      this->ListView1->Size = System::Drawing::Size( 292, 130 );
      this->ListView1->TabIndex = 0;
      this->ListView1->View = System::Windows::Forms::View::Details;
      this->ListView1->MultiSelect = true;
      this->ListView1->HideSelection = false;
      this->ListView1->HeaderStyle = ColumnHeaderStyle::Nonclickable;
      ColumnHeader^ columnHeader1 = gcnew ColumnHeader;
      columnHeader1->Text = "Breakfast Item";
      columnHeader1->TextAlign = HorizontalAlignment::Left;
      columnHeader1->Width = 146;
      ColumnHeader^ columnHeader2 = gcnew ColumnHeader;
      columnHeader2->Text = "Price Each";
      columnHeader2->TextAlign = HorizontalAlignment::Center;
      columnHeader2->Width = 142;
      this->ListView1->Columns->Add( columnHeader1 );
      this->ListView1->Columns->Add( columnHeader2 );
      array<String^>^foodList = {"Juice","Coffee","Cereal & Milk","Fruit Plate","Toast & Jelly","Bagel & Cream Cheese"};
      array<String^>^foodPrice = {"1.09","1.09","2.19","2.49","1.49","1.49"};
      for ( int count = 0; count < foodList->Length; count++ )
      {
         ListViewItem^ listItem = gcnew ListViewItem( foodList[ count ] );
         listItem->SubItems->Add( foodPrice[ count ] );
         ListView1->Items->Add( listItem );

      }
      this->Controls->Add( ListView1 );
   }

...
   // Uses the SelectedIndices property to retrieve and tally the  
   // price of the selected menu items.
   void ListView1_SelectedIndexChanged_UsingIndices( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      ListView::SelectedIndexCollection^ indexes = this->ListView1->SelectedIndices;
      double price = 0.0;
      System::Collections::IEnumerator^ myEnum1 = indexes->GetEnumerator();
      while ( myEnum1->MoveNext() )
      {
         int index = safe_cast<int>(myEnum1->Current);
         price += Double::Parse( this->ListView1->Items[ index ]->SubItems[ 1 ]->Text );
      }

      
      // Output the price to TextBox1.
      TextBox1->Text = price.ToString();
   }
    // This method adds two columns to the ListView, setting the Text 
    // and TextAlign, and Width properties of each ColumnHeader.  The 
    // HeaderStyle property is set to NonClickable since the ColumnClick 
    // event is not handled.  Finally the method adds ListViewItems and 
    // SubItems to each column.
    private void InitializeListView()
    {
        this.listView1 = new System.Windows.Forms.ListView();
        this.listView1.set_BackColor(
            System.Drawing.SystemColors.get_Control());
        this.listView1.set_Dock(System.Windows.Forms.DockStyle.Top);
        this.listView1.set_Location(new System.Drawing.Point(0, 0));
        this.listView1.set_Name("listView1");
        this.listView1.set_Size(new System.Drawing.Size(292, 130));
        this.listView1.set_TabIndex(0);
        this.listView1.set_View(System.Windows.Forms.View.Details);
        this.listView1.set_MultiSelect(true);
        this.listView1.set_HideSelection(false);
        this.listView1.set_HeaderStyle(ColumnHeaderStyle.Nonclickable);

        ColumnHeader columnHeader1 = new ColumnHeader();
        columnHeader1.set_Text("Breakfast Item");
        columnHeader1.set_TextAlign(HorizontalAlignment.Left);
        columnHeader1.set_Width(146);

        ColumnHeader columnHeader2 = new ColumnHeader();
        columnHeader2.set_Text("Price Each");
        columnHeader2.set_TextAlign(HorizontalAlignment.Center);
        columnHeader2.set_Width(142);

        this.listView1.get_Columns().Add(columnHeader1);
        this.listView1.get_Columns().Add(columnHeader2);

        String foodList[] = new String[] { "Juice", "Coffee", "Cereal & Milk",
            "Fruit Plate", "Toast & Jelly", "Bagel & Cream Cheese" };
        String foodPrice[] = new String[] { "1.09", "1.09", "2.19", "2.49",
            "1.49", "1.49" };

        for (int count = 0; count < foodList.get_Length(); count++) {
            ListViewItem listItem = new ListViewItem(
                foodList.get_Item(count).ToString());
            listItem.get_SubItems().Add(foodPrice.get_Item(count).ToString());
            listView1.get_Items().Add(listItem);
        }
        this.get_Controls().Add(listView1);
    } //InitializeListView

...
    // Uses the SelectedIndices property to retrieve and tally the  
    // price of the selected menu items.
    private void listView1_SelectedIndexChanged_UsingIndices(Object sender, 
        System.EventArgs e)
    {
        ListView.SelectedIndexCollection indexes = 
            this.listView1.get_SelectedIndices();

        double price = 0.0;
        for (int iCtr = 0; iCtr < indexes.get_Count(); iCtr++) {
            int index = indexes.get_Item(iCtr);
            price += System.Double.Parse(this.listView1.get_Items().
                get_Item(index).get_SubItems().get_Item(1).get_Text());
        }
        // Output the price to textBox1.
        textBox1.set_Text(System.Convert.ToString(price));
    } //listView1_SelectedIndexChanged_UsingIndices

Vererbungshierarchie

System.Object
  System.Windows.Forms.ListView.SelectedIndexCollection

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

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

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

ListView.SelectedIndexCollection-Member
System.Windows.Forms-Namespace