ListView.SelectedIndexCollection 类    
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示包含 ListView 控件中选定项的索引的集合。
public: ref class ListView::SelectedIndexCollection : System::Collections::IList
	public class ListView.SelectedIndexCollection : System.Collections.IList
	[System.ComponentModel.ListBindable(false)]
public class ListView.SelectedIndexCollection : System.Collections.IList
	type ListView.SelectedIndexCollection = class
    interface IList
    interface ICollection
    interface IEnumerable
	[<System.ComponentModel.ListBindable(false)>]
type ListView.SelectedIndexCollection = class
    interface IList
    interface ICollection
    interface IEnumerable
	Public Class ListView.SelectedIndexCollection
Implements IList
		- 继承
 - 
				ListView.SelectedIndexCollection
 
- 属性
 
- 实现
 
示例
下面的代码示例演示如何使用 SelectedIndices、 SelectedIndexChanged和 HeaderStyle 成员和 ListView.SelectedIndexCollection 类。 若要运行此示例,请将以下代码粘贴到包含 ListView 名为 ListView1 的对象和名为 的 TextBoxTextBox1窗体中。 
              InitializeListView从窗体的构造函数或Load事件处理程序调用 方法。 此示例要求事件处理程序与 事件正确关联 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.
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 );
}
  // 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);
  }
' 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.
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();
}
// 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();
}
' 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
	注解
将 ListView.SelectedIndexCollection 索引存储到控件中的 ListView 选定项。 中存储的 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.SelectedIndexCollection(ListView) | 
		 初始化 ListView.SelectedIndexCollection 类的新实例。  | 
        	
属性
| Count | 
		 获取集合中的项数。  | 
        	
| IsReadOnly | 
		 获取一个值,该值指示集合是否为只读。  | 
        	
| Item[Int32] | 
		 获取集合中指定索引处的索引值。  | 
        	
方法
| Add(Int32) | 
		 将 Items 数组中指定索引处的项添加到集合。  | 
        	
| Clear() | 
		 清除集合中的项。  | 
        	
| Contains(Int32) | 
		 确定指定索引是否位于集合中。  | 
        	
| CopyTo(Array, Int32) | 
		 将整个集合复制到现有数组中,从该数组内的指定位置开始复制。  | 
        	
| Equals(Object) | 
		 确定指定对象是否等于当前对象。 (继承自 Object) | 
        	
| GetEnumerator() | 
		 返回可用于循环访问选定索引集合的枚举数。  | 
        	
| GetHashCode() | 
		 作为默认哈希函数。 (继承自 Object) | 
        	
| GetType() | 
		 获取当前实例的 Type。 (继承自 Object) | 
        	
| IndexOf(Int32) | 
		 从 ListView.SelectedIndexCollection 控件的 ListView.ListViewItemCollection 中返回指定索引的 ListView 内的索引。  | 
        	
| MemberwiseClone() | 
		 创建当前 Object 的浅表副本。 (继承自 Object) | 
        	
| Remove(Int32) | 
		 从 Items 中移除 ListView.SelectedIndexCollection 集合中指定索引处的项。  | 
        	
| ToString() | 
		 返回表示当前对象的字符串。 (继承自 Object) | 
        	
显式接口实现
| ICollection.IsSynchronized | 
		 获取一个值,该值指示对集合的访问是否为同步的(线程安全)。  | 
        	
| ICollection.SyncRoot | 
		 获取可用于同步控件集合访问的对象。  | 
        	
| IList.Add(Object) | 
		 向集合中添加一项。  | 
        	
| IList.Clear() | 
		 从集合中移除所有项。  | 
        	
| IList.Contains(Object) | 
		 确定指定项是否位于集合内。  | 
        	
| IList.IndexOf(Object) | 
			 此 API 支持产品基础结构,不能在代码中直接使用。 返回 ListView.SelectedIndexCollection 中的索引。 ListView.SelectedIndexCollection 包含 ListView.ListViewItemCollection 控件的 ListView 中的选定项的索引。  | 
        	
| IList.Insert(Int32, Object) | 
		 将某个项插入到集合中的指定索引处。  | 
        	
| IList.IsFixedSize | 
		 获取一个值,该值指示 ListView.SelectedIndexCollection 是否具有固定大小。  | 
        	
| IList.Item[Int32] | 
		 获取或设置集合中的对象。  | 
        	
| IList.Remove(Object) | 
		 从集合中移除指定项的第一个匹配项。  | 
        	
| IList.RemoveAt(Int32) | 
		 移除集合中指定索引处的项。  | 
        	
扩展方法
| Cast<TResult>(IEnumerable) | 
		 将 IEnumerable 的元素强制转换为指定的类型。  | 
        	
| OfType<TResult>(IEnumerable) | 
		 根据指定类型筛选 IEnumerable 的元素。  | 
        	
| AsParallel(IEnumerable) | 
		 启用查询的并行化。  | 
        	
| AsQueryable(IEnumerable) | 
		 将 IEnumerable 转换为 IQueryable。  |