Autor Beitrag
GURKE deluxe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 91
Erhaltene Danke: 1

Win 7 Home Premium x64, Win XP Home Edition v2002
C# Microsoft Visual C# 2010 Express
BeitragVerfasst: Di 13.03.12 19:18 
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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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
ausblenden 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:
ausblenden C#-Quelltext
1:
bDatenfeld.Items.AddRange(liDatenfeld.Cast<object>().ToArray());					

(Stichwort: Boxing/Unboxing)

Weitere Möglichkeiten sind auch unter Convert List<T> 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)?
ujr
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 102
Erhaltene Danke: 12



BeitragVerfasst: Mi 14.03.12 10:34 
user profile iconGURKE deluxe hat folgendes geschrieben Zum zitierten Posting springen:
Wie bekomme ich die Liste elegant in die Listbox rein?


Über Datenbindung.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 14.03.12 11:05 
@ujr: Da hast du natürlich Recht ;-)

@Julian: hier ein paar Tutorials dazu:
List Box Data Binding (einfaches Beispiel)
Data Binding in .NET / C# Windows Forms (DataBinding zu ListBox ist analog zu ComboBox)
A Detailed Data Binding Tutorial (in die Tiefe gehend)