# Item aus ListBox löschen - c# Windows Forms GUI



## Puepue (22. Mai 2011)

*Item aus ListBox löschen - c# Windows Forms GUI*

Hallo zusammen,
ich habe ein kleines Problem bei einem Schulprojekt. Wir haben angefangen ein KOnsolenprogramm mit einer GUI zu versehen.
Es handelt sich um einen "Buchladen". In einer ListBox Adde ich nach jedem Anlegen eines Buches ein Item:

```
this.buecherliste.Items.Add(buch.isbn.ToString() + "\t" + buch.titel + "\t" + buch.autor + "\t" + buch.seitenZahl.ToString() + "\t" + "Text: " + buch.leseProbe());
```
oder - wenn z.B. nur die ISBN angegeben wurde:

```
this.buecherliste.Items.Add(buch.isbn.ToString());
```
Beim Löschen bekomme ich dann aber ein Problem, weil ich nicht genau weiß, wie ich das angeben muss - ich habe das hier versucht:

```
this.buecherliste.Items.Remove(this.inpIsbnLoeschen.Text);
```
funktioniert, sofern ich nur die ISBN angegeben habe, wenn ich aber mehr angegeben habe, bleibt das Buch in der Liste.. 

Ich hänge einfach mal mein gesamtes Projekt an, damit klar wird, was ich meine


----------



## deckard-cain (22. Mai 2011)

*AW: Item aus ListBox löschen - c# Windows Forms GUI*

beim Remove musst Du das ganze Objekt angeben, weil Remove() eine Referenz des zu entfernenden Objekts erwartet.

Alternativ kannst Du auch RemoveAt() nehmen, das will den Index des zu entfernenden Items (beginnend mit 0).

das beste wäre, Du baust Dir einen Dictionary mit dem ISBN-String als Key und dem entsprechenden Item als Object-Value, 
dann kannst Du über die ISBN das Objekt im Dictionary selektieren und an die Remove-Methode übergeben.

ListBox.Items.Remove(dicItems[ISBN]);


----------



## Puepue (22. Mai 2011)

*AW: Item aus ListBox löschen - c# Windows Forms GUI*

Danke für den Tipp - gibt es nicht eine möglichkeit den Index direkt herauszufinden? Mit Index-Of z.B bzw. ihn direkt beim anlegen anzugeben? diue isbn ist unique - die würde ich also gern als key verwenden..


----------

