Autor Beitrag
DenniZ
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 30

Win XP
C# (VS 2k5)
BeitragVerfasst: Mi 04.04.07 04:11 
Hi!

Ich möchte schlicht und einfach einen Eintrag aus einer listBox (hier "listKickban") entfernen aber irgendwie, das will nicht funktionieren! Hab auch schon lange bei Google gesucht aber ich weis nicht woran das liegt!
Hier ist der Code:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
        private void btnDel_Click(object sender, EventArgs e)
        {
            ListBox listKickban = new ListBox();

            this.listKickban.Items.Remove(listKickban.SelectedItems);
        }


Ich weis gar nicht warum das nicht geht... achja, bin noch "Anfänger", hab 2 Wochen (ja viel fü mich :D ) nichts mehr gecoded!
Danke schonmal,
Dennis

_________________
Am Ende des Geldes ist immer noch viel Monat übrig :(
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 04.04.07 11:19 
Du erzeugst eine lokale ListBox und greifst dann auf die Klassenlistbox zurück? Erklär mir mal das Prinzip Deines Codes und was Du damit erreichen willst.

Außerdem: Wie funktioniert es genau nicht, also kommt ein Fehler?
DenniZ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 30

Win XP
C# (VS 2k5)
BeitragVerfasst: Mi 04.04.07 12:35 
Hmmm, also deine Anwort hat mich glaube mal wach gerüttelt, ich brauche die erste Zeile des Codes gar nicht (Listbox ... = ...) oder?! So kams mir vor *g*

Mein Prinzip:
Einen Eintrag zu einer ListBox hinzufügen und später auch wieder entfernen, es soll dann der markierte entfernt werden.
Das Hinzufügen ist ja einfach, habe ich schon mal gemacht nur beim Löschen hacke ich irgendwie gerade.
Habe den Code gerade auch noch ohne die erste Zeile probiert, er geht nicht.

Es kommt kein Fehler, es passiert leider nur gar nichts, keinen Effekt.

_________________
Am Ende des Geldes ist immer noch viel Monat übrig :(
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 04.04.07 12:50 
Lässt Du das Markieren von mehreren Einträgen zu? Wenn nicht, solltest Du statt SelectedItems lieber SelectedItem nehmen:
ausblenden C#-Quelltext
1:
2:
3:
4:
        private void btnDel_Click(object sender, EventArgs e)
        {
            this.listKickban.Items.Remove(listKickban.SelectedItem);
        }

Ansonsten musst Du eine Schleife verwenden
ausblenden C#-Quelltext
1:
2:
foreach (object val in listKickBan.Items.SelectedItems)
   listKickBan.Items.Remove(val);
DenniZ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 30

Win XP
C# (VS 2k5)
BeitragVerfasst: Mi 04.04.07 13:11 
Hmm ich sehe schon, blöde Fehler von mir! Danke dir schonmal, jetzt geht das jedenfalls.

Noch eine kleine Frage dazu, ich habe jetzt in der ListBox eingestellt dass man mehrere Auswählen darf. Jetzt versuche ich deinen Code (die Schleife) zu verwenden. Aber! Müsste das nicht so heißen:
ausblenden C#-Quelltext
1:
2:
            foreach (object val in listKickban.SelectedItems)
                listKickban.Items.Remove(val);


object val in listKickban.SelectedItems ? Weil Items.SelectedItems geht ja gar nicht. Da bringt Visual Studio übrigens dann auch einen Fehler *g*

Er bringt dann auch so beim Code einen Fehler, im Debuggin-Modus markiert er ds "in" und so lautet der Fehler:
"List that this enumerator is bound to has been modified. An enumerator can only be used if the list does not change."
Kann leider nichts damit anfangen, hab mit Schleifen noch nicht gearbeitet!

_________________
Am Ende des Geldes ist immer noch viel Monat übrig :(
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 04.04.07 14:29 
Remove manipuliert direkt die Collection, daher funktioniert der Enumerator nicht mehr. Ich hab hier einen kleinen Workaround, etwas Besseres ist mir bisher nicht eingefallen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
            List<object> list = new List<object>(listKickBan.SelectedItems.Count);
            foreach (object val in listKickBan.SelectedItems)
                list.Add(val);
            foreach (object val in list)
                listKickBan.Items.Remove(val);
DenniZ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 30

Win XP
C# (VS 2k5)
BeitragVerfasst: Mi 04.04.07 14:49 
Danke dir vielmals! Funktioniert einwandfrei!

:)

_________________
Am Ende des Geldes ist immer noch viel Monat übrig :(