This documentation is archived and is not being maintained.

ListView.SelectedIndices Property

Gets the indexes of the selected items in the control.

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

public SelectedIndexCollection SelectedIndices { get; }
/** @property */
public SelectedIndexCollection get_SelectedIndices ()

public function get SelectedIndices () : SelectedIndexCollection

Not applicable.

Property Value

A ListView.SelectedIndexCollection that contains the indexes of the selected items. If no items are currently selected, an empty ListView.SelectedIndexCollection is returned.

The SelectedIndices property will not contain any indexes if the property is accessed before the ListView handle is created, which typically occurs when the ListView is initially loaded for display in the form. You can check to see if the handle is created with the IsHandleCreated property. When the MultiSelect property is set to true, this property returns a collection containing the indexes of all items that are selected in the ListView. For a single-selection ListView, this property returns a collection containing a single element containing the index of the only selected item in the ListView. For more information on the tasks that can be performed with the items in the collection, see ListView.SelectedIndexCollection.

If you want to obtain a collection of the items that are selected in the ListView control, instead of the index positions of the items that are selected, use the SelectedItems property.

The following code example demonstrates using the SelectedIndices, SelectedIndexChanged, and HeaderStyle members and the ListView.SelectedIndexCollection class. To run this example, paste the following code into a form that contains a ListView object named ListView1 and a TextBox named TextBox1. Call the InitializeListView method from the form's constructor or Load method. This example requires the event handler is correctly associated with the SelectedIndexChanged event.

// 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.
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

Windows 98, Windows Server 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

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0, 1.0
Show: