Come SelectAll / SelectNone in .NET 2.0 ListView?
Domanda
Che cosa è un buon modo per selezionare tutti o seleziona n elementi in un controllo listview senza l'utilizzo di:
foreach (ListViewItem item in listView1.Items)
{
item.Selected = true;
}
o
foreach (ListViewItem item in listView1.Items)
{
item.Selected = false;
}
So Win32 sottostante controllo listview comune supporta Messaggio LVM_SETITEMSTATE che è possibile utilizzare per impostare lo stato selezionato, e passando -1 l'indice che si applica a tutti gli elementi.Io preferisco non essere PInvoking messaggi di controllo che sembra essere dietro l' .NET di controllo Listview (non voglio essere un cattivo sviluppatore e si basano su privi di documenti comportamento - per quando si modifica una completamente gestito classe ListView)
Bump
Pseudo Masochista ha il SelectNone caso:
ListView1.SelectedItems.Clear();
Ora solo bisogno di SelectAll codice
Soluzione
Wow questo è un vecchio...:D
SELEZIONA TUTTO
listView1.BeginUpdate();
foreach (ListViewItem i in listView1.Items)
{
i.Selected = true;
}
listView1.EndUpdate();
SELEZIONA INVERSO
listView1.BeginUpdate();
foreach (ListViewItem i in listView1.Items)
{
i.Selected = !i.Selected;
}
listView1.EndUpdate();
BeginUpdate
e EndUpdate
sono utilizzati per attivare/disattivare il controllo di ridisegnare mentre il suo contenuto è in fase di aggiornamento...Immagino che sarebbe seleziona tutto più veloce, in quanto sarebbe aggiorna solo una volta, e non listView.Items.Count
volte.
Altri suggerimenti
Sia
ListView1.SelectedItems.Clear();
o
ListView1.SelectedIndices.Clear();
dovrebbe fare il trucco per selezionare nessuno, comunque.