Pregunta

¿Cuál es una buena manera de seleccionar todos o no seleccionar ningún elemento en una vista de lista sin usar:

foreach (ListViewItem item in listView1.Items)
{
 item.Selected = true;
}

o

foreach (ListViewItem item in listView1.Items)
{
 item.Selected = false;
}

Sé que el control común de vista de lista subyacente de Win32 admite Mensaje LVM_SETITEMSTATE que puede usar para establecer el estado seleccionado y, al pasar -1 como índice, se aplicará a todos los elementos.Preferiría no invocar mensajes al control que está detrás del control .NET Listview (no quiero ser un mal desarrollador y confiar en un comportamiento no documentado, para cuando lo cambien a una clase ListView totalmente administrada)

Bulto

Pseudo masoquista tiene el Seleccionar Ninguno caso:

ListView1.SelectedItems.Clear(); 

Ahora solo falta el Seleccionar todo código

¿Fue útil?

Solución

Vaya, esto es viejo...:D

SELECCIONAR TODO

 listView1.BeginUpdate(); 
 foreach (ListViewItem i in listView1.Items)
 {
     i.Selected = true;
 }
 listView1.EndUpdate();

SELECCIÓN INVERSA

 listView1.BeginUpdate(); 
 foreach (ListViewItem i in listView1.Items)
 {
     i.Selected = !i.Selected;
 }
 listView1.EndUpdate();

BeginUpdate y EndUpdate se utilizan para deshabilitar/habilitar el redibujado del control mientras se actualiza su contenido...Supongo que seleccionaría todo más rápido, ya que se actualizaría sólo una vez y no listView.Items.Count veces.

Otros consejos

Cualquiera

ListView1.SelectedItems.Clear();

o

ListView1.SelectedIndices.Clear();

debería funcionar para seleccionar ninguno, de todos modos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top