ListView.SelectedIndexCollection 类

表示包含 ListView 控件中选定项的索引的集合。

**命名空间:**System.Windows.Forms
**程序集:**System.Windows.Forms(在 system.windows.forms.dll 中)

语法

声明
Public Class SelectedIndexCollection
    Implements IList, ICollection, IEnumerable
用法
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

备注

ListView.SelectedIndexCollectionListView 控件中储存选定项的索引。ListView.SelectedIndexCollection 中存储的索引是 ListView.ListViewItemCollection 内的索引位置。ListView.ListViewItemCollection 存储在 ListView 控件中显示的所有项。

下表显示了 ListView.ListViewItemCollection 如何存储 ListView 的项的一个示例,并显示了这些项在示例 ListView 中的选择状态。

索引

Item

ListView 中的选择状态

0

Item1

未选定

1

Item2

已选定

2

Item3

未选定

3

Item4

已选定

4

Item5

已选定

基于前一个表中的 ListView.ListViewItemCollection 示例,下表说明 ListView.SelectedIndexCollection 将如何显示。

索引

ListViewItemCollection 中选定项的索引

0

1

1

3

2

4

可以使用此类的属性和方法对集合执行各种任务。Contains 方法使您能够确定 ListView.ListViewItemCollection 的索引位置是否是存储在 ListView.SelectedIndexCollection 中的索引之一。知道项位于该集合中后,可以使用 IndexOf 方法确定该索引在 ListView.SelectedIndexCollection 中的位置。

示例

下面的代码示例演示了如何使用 ListView.SelectedIndexCollectionSelectedIndicesSelectedIndexChanged 成员以及 HeaderStyle 类。若要运行此示例,请将以下代码粘贴到一个窗体中,该窗体包含一个名为 ListView1ListView 对象和一个名为 TextBox1TextBox。从窗体的构造函数或 Load 事件处理程序中调用 InitializeListView 方法。此示例要求事件处理程序与 SelectedIndexChanged 事件正确关联。

    ' 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

继承层次结构

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

线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、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

请参见

参考

ListView.SelectedIndexCollection 成员
System.Windows.Forms 命名空间