Comment sélectionner tout / rien sélectionner dans .NET 2.0 ListView?
Question
Quel est un bon moyen de sélectionner tous les éléments ou de ne sélectionner aucun élément dans une liste sans utiliser:
foreach (ListViewItem item in listView1.Items)
{
item.Selected = true;
}
ou
foreach (ListViewItem item in listView1.Items)
{
item.Selected = false;
}
Je connais le contrôle commun Win32 listview sous-jacent compatible avec LVM_SETITEMSTATE message que vous pouvez utiliser pour définir l’état sélectionné et en passant -1 comme index, il s’appliquera à tous les éléments. Je préférerais ne pas être des messages PInvoking sur le contrôle qui se trouve derrière le contrôle .NET Listview (je ne veux pas être un mauvais développeur et me fier à un comportement non documenté, car ils le modifient en une classe ListView entièrement gérée)
Bosse
Le pseudo-masochiste a le cas SelectNone :
ListView1.SelectedItems.Clear();
Maintenant, il vous suffit du code Tout sélectionner
.La solution
Wow c'est vieux ...: D
SÉLECTIONNER TOUT
listView1.BeginUpdate();
foreach (ListViewItem i in listView1.Items)
{
i.Selected = true;
}
listView1.EndUpdate();
SELECT INVERSE
listView1.BeginUpdate();
foreach (ListViewItem i in listView1.Items)
{
i.Selected = !i.Selected;
}
listView1.EndUpdate();
BeginUpdate
et EndUpdate
sont utilisés pour désactiver / activer le rafraîchissement du contrôle pendant la mise à jour de son contenu ... Je suppose qu'il sélectionnerait tout plus rapidement, car il rafraîchirait une seule fois, et non pas listView.Items.Count
fois.
Autres conseils
Soit
ListView1.SelectedItems.Clear();
ou
ListView1.SelectedIndices.Clear();
devrait faire l'affaire pour n'en sélectionner aucun, de toute façon.