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.Ä.
Was bedeutet denn listView1.SelectedItems[**:::
Entfernen tust du ohnehin besser so:
foreach (ListViewItem item in listView1.SelectedItems)
{
item.Remove();
}
> Codejunky <
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
Stimmt. Ich war mir nicht sicher, ob die Selected-Collection unverändert bleibt. Hab das verwechselt.
> Codejunky <
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."
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
listView1.Items.RemoveAt(listView1.SelectedIndices[0]);
So hat es nun funktioniert recht herzlichen dank was würde ich nur ohne euch tun hehe.