GURKE deluxe - Di 13.03.12 19:18
Titel: List<int> in Listbox.Items
Hallo,
Ich habe eine Liste mit integer drin. Diese möchte ich einer Listbox hinzufügen. Per Schleife dauert das bei 10000+ Einträgen schon sehr lange. Deswegen dachte ich, das es wahrscheinlich schneller geht, wenn ich die AddRange-Methode benutze:
C#-Quelltext
1:
| lbDatenfeld.Items.AddRange(new object[] { liDatenfeld }); |
Allerdings steht dann in der Listbox nur Auflistung. Wie bekomme ich die Liste elegant in die Listbox rein?
Gruß
Julian
Th69 - Di 13.03.12 19:58
Hallo,
so fügst du in die ListBox nur genau einen Wert hinzu (nämlich die Liste 'liDatenfeld' selbst).
Laß einfach das
new object[] { } weg und verwende stattdessen die
ToArray()-Methode, also
C#-Quelltext
1:
| lbDatenfeld.Items.AddRange(liDatenfeld.ToArray()); |
Edit: da dies nur für Referenztypen funktioniert (also nicht für Wertetypen wie
int mußt du in deinem Fall noch
Cast<object>() zusätzlich verwenden:
C#-Quelltext
1:
| bDatenfeld.Items.AddRange(liDatenfeld.Cast<object>().ToArray()); |
(Stichwort: Boxing/Unboxing)
Weitere Möglichkeiten sind auch unter
Convert List<T> to object[] [
http://stackoverflow.com/questions/782096/convert-listt-to-object] zu finden.
Alternativ kannst du die manuelle Schleife auch mittels
ListBox.BeginUpdate() und
ListBox.EndUpdate() umrahmen (damit nicht jede Änderung zu einer Aktualisierung führt).
P.S. Verwendest du wirklich Silverlight (denn dort scheint es kein AddRange zu geben:
ItemCollection [
http://msdn.microsoft.com/en-us/library/system.windows.controls.itemcollection%28v=vs.95%29.aspx])?