ListView.CheckedItems 属性

获取控件中当前选中的项。

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

语法

声明
Public ReadOnly Property CheckedItems As CheckedListViewItemCollection
用法
Dim instance As ListView
Dim value As CheckedListViewItemCollection

value = instance.CheckedItems
public CheckedListViewItemCollection CheckedItems { get; }
public:
property CheckedListViewItemCollection^ CheckedItems {
    CheckedListViewItemCollection^ get ();
}
/** @property */
public CheckedListViewItemCollection get_CheckedItems ()
public function get CheckedItems () : CheckedListViewItemCollection

属性值

ListView.CheckedListViewItemCollection,包含当前选中的项。如果当前未选中任何项,则返回空的 ListView.CheckedListViewItemCollection

备注

该属性仅当 ListView 控件的 CheckBoxes 属性设置为 true 时才有用。CheckedItems 属性返回一个集合,该集合包含控件中的所有选中项。有关如何操作该集合中的项的更多信息,请参见 ListView.CheckedListViewItemCollection

如果要获取 ListView 控件中的选中项在 ListView.ListViewItemCollection 中的索引位置的集合,而不是选中的项,请使用 CheckedIndices 属性。

示例

下面的代码示例演示一个选中的 ListView,该控件处理 ItemChecked 事件。该示例使用 CheckedItems 属性在每次选中或取消选中某项时计算新价格。若要运行此示例,请将以下代码粘贴到一个窗体中,该窗体包含一个名为 ListView1ListView 和一个名为 Textbox1TextBox。从窗体的构造函数或 Load 方法调用 InititalizeListView 方法。

    Private Sub InitializeListView()
        Me.ListView1 = New System.Windows.Forms.ListView

        ' Set properties such as BackColor, Location and Size
        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.Size = New System.Drawing.Size(292, 130)
        Me.ListView1.View = System.Windows.Forms.View.Details
        Me.ListView1.HideSelection = False

        ' Allow user to select multiple items.
        Me.ListView1.MultiSelect = True

        ' Show check boxes in the ListView.
        Me.ListView1.CheckBoxes = True

        'Set the column headers and populate the columns.
        ListView1.HeaderStyle = ColumnHeaderStyle.Nonclickable
        Dim columnHeader1 As New ColumnHeader
        With columnHeader1
            .Text = "Breakfast Choices"
            .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.79", "2.09", "2.69"}
        Dim count As Integer

        ' Members are added one at a time, so call BeginUpdate to ensure 
        ' the list is painted only once, rather than as each list item is added.
        ListView1.BeginUpdate()

        For count = 0 To foodList.Length - 1
            Dim listItem As New ListViewItem(foodList(count))
            listItem.SubItems.Add(foodPrice(count))
            ListView1.Items.Add(listItem)
        Next

        'Call EndUpdate when you finish adding items to the ListView.
        ListView1.EndUpdate()
        Me.Controls.Add(Me.ListView1)
    End Sub

...
    ' Handles the ItemCheck event.  The method loops through all the 
    ' checked items and tallies a new price each time an item is 
    ' checked or unchecked. It outputs the price to TextBox1.
    Private Sub ListView1_ItemCheck2(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.ItemCheckEventArgs) _
        Handles ListView1.ItemCheck

        Dim item As ListViewItem
        Dim price As Double = 0.0
        Dim checkedItems As ListView.CheckedListViewItemCollection = _
            ListView1.CheckedItems
        For Each item In checkedItems
            price += Double.Parse(item.SubItems(1).Text)
        Next
        If (e.CurrentValue = CheckState.Unchecked) Then
            price += Double.Parse(Me.ListView1.Items(e.Index).SubItems(1).Text)
        ElseIf (e.CurrentValue = CheckState.Checked) Then
            price -= Double.Parse(Me.ListView1.Items(e.Index).SubItems(1).Text)
        End If

        ' Output the price to TextBox1.
        TextBox1.Text = CType(price, String)
    End Sub
 private void InitializeListView()
    {
        this.ListView1 = new System.Windows.Forms.ListView();

        // Set properties such as BackColor and DockStyle and Location.
        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.Size = new System.Drawing.Size(292, 130);
        this.ListView1.View = System.Windows.Forms.View.Details;
        this.ListView1.HideSelection = false;

        // Allow the user to select multiple items.
        this.ListView1.MultiSelect = true;

        // Show CheckBoxes in the ListView.
        this.ListView1.CheckBoxes = true;
        
        //Set the column headers and populate the columns.
        ListView1.HeaderStyle = ColumnHeaderStyle.Nonclickable;
        
        ColumnHeader columnHeader1 = new ColumnHeader();
        columnHeader1.Text = "Breakfast Choices";
        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.79", "2.09", "2.69"};
        
        int count;

        // Members are added one at a time, so call BeginUpdate to ensure 
        // the list is painted only once, rather than as each list item is added.
        ListView1.BeginUpdate();

        for(count = 0; count < foodList.Length; count++)
        {
            ListViewItem listItem = new ListViewItem(foodList[count]);
            listItem.SubItems.Add(foodPrice[count]);
            ListView1.Items.Add(listItem);
        }

        //Call EndUpdate when you finish adding items to the ListView.
        ListView1.EndUpdate();
        this.Controls.Add(this.ListView1);
    }

...
   // Handles the ItemChecked event.  The method loops through all the 
    // checked items and tallies a new price each time an item is 
    // checked or unchecked. It outputs the price to TextBox1.
    private void ListView1_ItemCheck2(object sender, 
        System.Windows.Forms.ItemCheckEventArgs e)
    {
        double price = 0.0;
        ListView.CheckedListViewItemCollection checkedItems = 
            ListView1.CheckedItems;
        
        foreach ( ListViewItem item in checkedItems )
        {
            price += Double.Parse(item.SubItems[1].Text);
        }
        if (e.CurrentValue==CheckState.Unchecked)
        {
            price += Double.Parse(
                this.ListView1.Items[e.Index].SubItems[1].Text);
        }
        else if((e.CurrentValue==CheckState.Checked))
        {
            price -= Double.Parse(
                this.ListView1.Items[e.Index].SubItems[1].Text);
        }
        // Output the price to TextBox1.
        TextBox1.Text = price.ToString();
    }
   void InitializeListView()
   {
      this->ListView1 = gcnew System::Windows::Forms::ListView;
      
      // Set properties such as BackColor and DockStyle and Location.
      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->Size = System::Drawing::Size( 292, 130 );
      this->ListView1->View = System::Windows::Forms::View::Details;
      this->ListView1->HideSelection = false;
      
      // Allow the user to select multiple items.
      this->ListView1->MultiSelect = true;
      
      // Show CheckBoxes in the ListView.
      this->ListView1->CheckBoxes = true;
      
      //Set the column headers and populate the columns.
      ListView1->HeaderStyle = ColumnHeaderStyle::Nonclickable;
      ColumnHeader^ columnHeader1 = gcnew ColumnHeader;
      columnHeader1->Text = "Breakfast Choices";
      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.79","2.09","2.69"};
      int count;
      
      // Members are added one at a time, so call BeginUpdate to ensure 
      // the list is painted only once, rather than as each list item is added.
      ListView1->BeginUpdate();
      for ( count = 0; count < foodList->Length; count++ )
      {
         ListViewItem^ listItem = gcnew ListViewItem( foodList[ count ] );
         listItem->SubItems->Add( foodPrice[ count ] );
         ListView1->Items->Add( listItem );
      }
      
      //Call EndUpdate when you finish adding items to the ListView.
      ListView1->EndUpdate();
      this->Controls->Add( this->ListView1 );
   }

...
   // Handles the ItemChecked event.  The method loops through all the 
   // checked items and tallies a new price each time an item is 
   // checked or unchecked. It outputs the price to TextBox1.
   void ListView1_ItemCheck2( Object^ /*sender*/, System::Windows::Forms::ItemCheckEventArgs^ e )
   {
      double price = 0.0;
      ListView::CheckedListViewItemCollection^ checkedItems = ListView1->CheckedItems;
      System::Collections::IEnumerator^ myEnum = checkedItems->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         ListViewItem^ item = safe_cast<ListViewItem^>(myEnum->Current);
         price += Double::Parse( item->SubItems[ 1 ]->Text );
      }

      if ( e->CurrentValue == CheckState::Unchecked )
      {
         price += Double::Parse( this->ListView1->Items[ e->Index ]->SubItems[ 1 ]->Text );
      }
      else
      if ( (e->CurrentValue == CheckState::Checked) )
      {
         price -= Double::Parse( this->ListView1->Items[ e->Index ]->SubItems[ 1 ]->Text );
      }

      // Output the price to TextBox1.
      TextBox1->Text = price.ToString();
   }
    private void InitializeListView()
    {
        this.listView1 = new System.Windows.Forms.ListView();
        // Set properties such as BackColor and DockStyle and Location.
        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_Size(new System.Drawing.Size(292, 130));
        this.listView1.set_View(System.Windows.Forms.View.Details);
        this.listView1.set_HideSelection(false);
        // Allow the user to select multiple items.
        this.listView1.set_MultiSelect(true);
        // Show CheckBoxes in the ListView.
        this.listView1.set_CheckBoxes(true);
        //Set the column headers and populate the columns.
        listView1.set_HeaderStyle(ColumnHeaderStyle.Nonclickable);

        ColumnHeader columnHeader1 = new ColumnHeader();
        columnHeader1.set_Text("Breakfast Choices");
        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.79",
            "2.09", "2.69" };

        int count;
        // Members are added one at a time, so call BeginUpdate to ensure 
        // the list is painted only once, rather than as each list item is added.
        listView1.BeginUpdate();

        for (count = 0; count < foodList.length; count++) {
            ListViewItem listItem =
                new ListViewItem((String)foodList.get_Item(count));
            listItem.get_SubItems().Add((String)foodPrice.get_Item(count));
            listView1.get_Items().Add(listItem);
        }
        //Call EndUpdate when you finish adding items to the ListView.
        listView1.EndUpdate();
        this.get_Controls().Add(this.listView1);
    } //InitializeListView

...
    // Handles the ItemChecked event.  The method loops through all the 
    // checked items and tallies a new price each time an item is 
    // checked or unchecked. It outputs the price to TextBox1.
    private void listView1_ItemCheck2(Object sender,
        System.Windows.Forms.ItemCheckEventArgs e)
    {
        double price = 0.0;
        ListView.CheckedListViewItemCollection checkedItems =
            listView1.get_CheckedItems();
        for (int iCtr = 0; iCtr < checkedItems.get_Count(); iCtr++) {
            ListViewItem item = checkedItems.get_Item(iCtr);
            price +=
                System.Double.Parse(item.get_SubItems().get_Item(1).get_Text());
        }
        if (e.get_CurrentValue().Equals(CheckState.Unchecked)) {
            price += System.Double.Parse(this.listView1.get_Items().
                get_Item(e.get_Index()).get_SubItems().get_Item(1).
                get_Text());
        }
        else {
            if (e.get_CurrentValue().Equals(CheckState.Checked)) {
                price -= System.Double.Parse(this.listView1.get_Items().
                    get_Item(e.get_Index()).get_SubItems().get_Item(1).
                    get_Text());
            }
        }
        // Output the price to TextBox1.
        textBox1.set_Text(((System.Double)price).ToString());
    } //listView1_ItemCheck2

平台

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

请参见

参考

ListView 类
ListView 成员
System.Windows.Forms 命名空间
ListView.CheckedListViewItemCollection
ListView.CheckedIndices 属性