Laden...

ListView: Selektieren Eintrag löschen

Erstellt von Metaller vor 13 Jahren Letzter Beitrag vor 13 Jahren 7.582 Views
M
Metaller Themenstarter:in
13 Beiträge seit 2011
vor 13 Jahren
ListView: Selektieren Eintrag löschen

Nabend

Also ich habe da folgendes Problem:
Ich würde gerne das markierte Item in einem listview löschen. Laut Google habe ich folgendes versucht:


listView1.Items.RemoveAt(listView1.SelectedItems.IndexOf(listView1.SelectedItems[0]));

Ok löschen funktioniert, nur leider das falsche. Der löscht immer nur das erste und nicht das ausgewählte. Ich habe 2 Einstellungne versucht "multiselect true/false" hatte keinen Einfluss dadrauf.

Ich hoffe ihr könnt helfen Danke

PS.: Nein ich möchte kein Datagrid o.Ä.

1.665 Beiträge seit 2006
vor 13 Jahren

Was bedeutet denn listView1.SelectedItems[**:::

Entfernen tust du ohnehin besser so:

foreach (ListViewItem item in listView1.SelectedItems)
{
    item.Remove();
}
49.485 Beiträge seit 2005
vor 13 Jahren

Hallo JunkyXL,

typischerweise ist es in einer foreach-Schleife verboten, die Collection, über die iteriert wird, zu verändern. Da Metaller aber in der Einzahl spricht, ist eine Schleife wohl sowieso nicht nötig.

herbivore

1.665 Beiträge seit 2006
vor 13 Jahren

Stimmt. Ich war mir nicht sicher, ob die Selected-Collection unverändert bleibt. Hab das verwechselt.

[FAQ] Auflistungs-Elemente suchen und entfernen

F
155 Beiträge seit 2009
vor 13 Jahren

Hallo,


listView1.Items.RemoveAt(listView1.SelectedIndices[0]);

so funktionierts.

Dein Fehler war listView1.SelectedItems.IndexOf, du hast dein Element in den selektierten Items gesucht und dort ist es immer das erste. So würde es funktionieren.

listView1.Items.RemoveAt(listView1.Items.IndexOf(listView1.SelectedItems[0]));

fz

"We better hurry up and start coding, there are going to be a lot of bugs to fix."

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo F.Z.,

das Problem mit dem IndexOf hast du schon korrekt beschrieben, denn mit dem Index bezüglich der SelectedIndices-Collection kann man natürlich in der Items-Collection nichts anfangen.

Wenn man aber eh schon am umstellen ist, gehts mit listView1.SelectedIndices[0].Remove () noch kürzer und übersichtlicher.

In allen Fällen geht das natürlich nur gut, wenn überhaupt ein Eintrag selektiert ist, sonst knallt es schon beim Zugriff auf SelectedIndices[0].

herbivore

M
Metaller Themenstarter:in
13 Beiträge seit 2011
vor 13 Jahren

                    listView1.Items.RemoveAt(listView1.SelectedIndices[0]); 

So hat es nun funktioniert recht herzlichen dank was würde ich nur ohne euch tun hehe.