¿Cómo seleccionar todo/seleccionar ninguno en .NET 2.0 ListView?
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
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.