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

.
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top