Cyperfriend
Der ohne Avatar
- Registriert
- 14 Juli 2013
- Beiträge
- 1.123
Ich arbeite immer noch fleißig an den Übungen und versuchte einmal mehr eine zu erweitern. Eigentlich wird in dem Buch nur gezeigt, wie ich mir die Mehrfachauswahl in einem Listenfeld als Text anzeigen lassen kann. Da aber im vorangegangenem Beispiel bereits ein Programm geschrieben wurde mit dem man (einzelne) Einträge löschen kann wollte ich direkt dieses Programm erweitern und mehrere Einträge auf einmal löschen (anstatt die mir nur in einem Text anzeigen zu lassen)
Die Eigenschaft "SelectionMode" ist auf "MultiSimple" gestellt ("MultiExtended" führt zum gleichen Ergebnis)
Mit dem folgenden Code wird bei einer einfachen Auswahl immer der oberste Eintrag gelöscht und bei einer mehrfachen Auswahl irgendwie je nach Anzahl der ausgewählten Elemente zwei bis drei Einträge. Habs aber nicht ganz kapiert. Jedenfalls funktioniert es so halt nicht. Hier mal der Code. Wäre toll, wenn mir jemand sagt wo der Fehler liegt.
[src=csharp]
private void cmdElementLoeschen_Click(object sender, EventArgs e)
{
int x = lstSpeisen.SelectedIndex;
if (x != -1)
{
for (x = 0; x < lstSpeisen.SelectedItems.Count; x++)
{
lstSpeisen.Items.RemoveAt(x);
}
}
}[/src]
Edit: Falls jemand das Tool nachschreiben möchte, hier der Code um das Listenfeld schnell zu füllen:
[src=csharp]
private void Form1_Load(object sender, EventArgs e)
{
lstSpeisen.Items.Add("Spaghetti");
lstSpeisen.Items.Add("Grüne Nudeln");
lstSpeisen.Items.Add("Tortellini");
lstSpeisen.Items.Add("Pizza");
lstSpeisen.Items.Add("Lasagne");
}[/src]
Die Eigenschaft "SelectionMode" ist auf "MultiSimple" gestellt ("MultiExtended" führt zum gleichen Ergebnis)
Mit dem folgenden Code wird bei einer einfachen Auswahl immer der oberste Eintrag gelöscht und bei einer mehrfachen Auswahl irgendwie je nach Anzahl der ausgewählten Elemente zwei bis drei Einträge. Habs aber nicht ganz kapiert. Jedenfalls funktioniert es so halt nicht. Hier mal der Code. Wäre toll, wenn mir jemand sagt wo der Fehler liegt.
[src=csharp]
private void cmdElementLoeschen_Click(object sender, EventArgs e)
{
int x = lstSpeisen.SelectedIndex;
if (x != -1)
{
for (x = 0; x < lstSpeisen.SelectedItems.Count; x++)
{
lstSpeisen.Items.RemoveAt(x);
}
}
}[/src]
Edit: Falls jemand das Tool nachschreiben möchte, hier der Code um das Listenfeld schnell zu füllen:
[src=csharp]
private void Form1_Load(object sender, EventArgs e)
{
lstSpeisen.Items.Add("Spaghetti");
lstSpeisen.Items.Add("Grüne Nudeln");
lstSpeisen.Items.Add("Tortellini");
lstSpeisen.Items.Add("Pizza");
lstSpeisen.Items.Add("Lasagne");
}[/src]