ListView.SelectedIndexCollection (Clase)
Actualización: noviembre 2007
Representa la colección que contiene los índices de los elementos seleccionados en un control ListView.
Ensamblado: System.Windows.Forms (en System.Windows.Forms.dll)
Un ListView.SelectedIndexCollection almacena los índices de los elementos seleccionados en un control ListView. Los índices almacenados en ListView.SelectedIndexCollection son posiciones de índice incluidas en la colección ListView.ListViewItemCollection. El ListView.ListViewItemCollection almacena todos los elementos que se muestran en el control ListView.
En la siguiente tabla se muestra un ejemplo de cómo la colección ListView.ListViewItemCollection almacena los elementos de ListView y presenta sus estados de selección en un control ListView de ejemplo.
|
Índice |
Elemento |
Estado de selección en el ListView |
|---|---|---|
|
0 |
Elemento1 |
No seleccionado |
|
1 |
Elemento2 |
Seleccionado |
|
2 |
Elemento3 |
No seleccionado |
|
3 |
Elemento4 |
Seleccionado |
|
4 |
Elemento5 |
Seleccionado |
Basándose en el ejemplo de la colección ListView.ListViewItemCollection de la tabla anterior, en la siguiente tabla se muestra cómo aparecería la colección ListView.SelectedIndexCollection.
|
Índice |
Índice del elemento seleccionado en ListViewItemCollection |
|---|---|
|
0 |
1 |
|
1 |
3 |
|
2 |
4 |
Los métodos y propiedades de esta clase se pueden utilizar para realizar diversas tareas con la colección. El método Contains permite determinar si una posición de índice de la colección ListView.ListViewItemCollection es uno de los índices almacenados en la colección ListView.SelectedIndexCollection. Una vez que sabe que el elemento está en la colección, puede utilizar el método IndexOf para determinar la posición del índice en el ListView.SelectedIndexCollection.
En el ejemplo de código siguiente se muestra cómo usar los miembros SelectedIndices, SelectedIndexChanged y HeaderStyle y la clase ListView.SelectedIndexCollection. Para ejecutar este ejemplo, pegue el siguiente código en un formulario que contenga un control ListView denominado ListView1 y un control TextBox denominado TextBox1. Llame al método InitializeListView desde el controlador de eventos Load o el constructor del formulario. Este ejemplo exige que el controlador de eventos esté correctamente asociado al evento 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 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 Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC
.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.