Frage

Was ist ein guter Weg, um alle oder wählen Sie keine Elemente in einer Listenansicht auswählen, ohne mit:

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

oder

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

Ich weiß, dass die zugrunde liegende Win32 Listview gemeinsame Steuerung unterstützt LVM_SETITEMSTATE Nachricht die Sie verwenden können, um den ausgewählten Zustand zu setzen, und indem -1 als Index es für alle Elemente gilt. Ich möchte lieber nicht werden PInvoking Nachrichten an die Steuerung, die hinter dem .NET Listview-Steuerelement sein geschieht (ich will nicht einen schlechten Entwickler und stützen sich auf undokumentierte Verhalten sein - denn wenn sie es auf eine vollständig verwaltete Listview-Klasse ändern)

Bump

Pseudo Masochist hat SelectNone Fall:

ListView1.SelectedItems.Clear(); 

Jetzt müssen nur die SelectAll Code

War es hilfreich?

Lösung

Wow das ist alt ...: D

Alles markieren

 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 und EndUpdate werden verwendet, um die Steuerung zu deaktivieren / aktivieren neu gezeichnet, während sein Inhalt wird aktualisiert ... ich es heraus alle schneller auswählen würde, da sie nur einmal aktualisieren würde, und nicht listView.Items.Count mal.

Andere Tipps

Entweder

ListView1.SelectedItems.Clear();

oder

ListView1.SelectedIndices.Clear();

sollte den Trick für ausgewählte keine tun, sowieso.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top