Wie Alle wählen / abwählen in .NET 2.0 Listview wählen?
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
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.