Ladegeschwindigkeit eines ListViews

13/06/2009 - 13:00 von Jakob Brunner, Luzern Switzerland | Report spam
Salü zàme
Ich habe ca. 1'500 Datensàtze, welche ich in einem ListView zur Auswahl
anzeige. Die Ladezeit für diese Datensàtze in das ListView sind störend
lange, obwohl ich mit BeginUpdate und EndUpdate dies versehen habe.
Die gleichen Datensàtze stelle ich an einem anderen Ort in einem TreeView
dar. Dies ergibt aber eine viel schnellere Ladezeit der gleichen Daten,
obwohl ja dort in àhnlicher Weise die Datensàtze in einzelne Knoten und dann
zur Tree geladen werden.
Nun meine Frage: Ist das ListView ein "langsames" Steuererlement oder mache
ich da was "kompliziert" falsch?

this.livBahnhof.BeginUpdate();
this.livBahnhof.Items.Clear();
ListViewItem item;

foreach (DataRow oRow in
this.bahnhoefeDataSet.ListRestBahnhof.Rows)
{
item = new ListViewItem((string)oRow["DesName"]);
item.SubItems.Add((string)oRow["KtoKürzel"]);
item.SubItems.Add((string)oRow["GesKürzel"]);
item.Tag = (int)oRow["DesID"];
this.livBahnhof.Items.Add(item);
}
this.livBahnhof.EndUpdate();

Gibt es einen besseren Weg als das ListView, obwohl ja dies, wie ich gelesen
habe, das Steuererlement sei, welches auch für den Expolorer verwendet wurde.

Danke für alle Hinweise.
Gruss
Jakob Brunner, Switzerland
 

Lesen sie die antworten

#1 Kerem Gümrükcü
13/06/2009 - 15:29 | Warnen spam
Hallo Jakob,

dazu solltest Du dir mal folgendes ansehen.

- doppeltes/effektiveres Puffern
(this.SetStyle(ControlStyles.OptimizedDoubleBuffer |
ControlStyles.AllPaintingInWmPaint, true);)

- u.U. das behandeln von WM_ERASEBKGND in der WndProc des LV

- VirtualMode für das ListView

- Application.DoEvents() für evtl. Abhandlung von
Fensternachrichten (Applikation hàngen verhindern)
innerhalb Schleifen/iterativen Prozessen

Über kurz oder lang wirst du auch mit problemen konfrontiert,
die hier gelöst werden:

[Flicker-free ListView in .NET and XP]
http://www.codeproject.com/KB/list/listviewxp.aspx

[Flicker-free ListView in .NET - Part 2]
http://www.codeproject.com/KB/list/listviewff.aspx

[Extended ListView]
http://www.codeproject.com/KB/list/EXListView.aspx

[A Much Easier to Use ListView]
http://www.codeproject.com/KB/list/...tView.aspx

Nein, generell gilt nicht, dass das ListView langsam ist,
sondern es hàngt von deiner Umsetzung ab,...

Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.pro-it-education.de/soft...iceremover
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

"Jakob Brunner, Luzern Switzerland"
schrieb im
Newsbeitrag news:
Salü zàme
Ich habe ca. 1'500 Datensàtze, welche ich in einem ListView zur Auswahl
anzeige. Die Ladezeit für diese Datensàtze in das ListView sind störend
lange, obwohl ich mit BeginUpdate und EndUpdate dies versehen habe.
Die gleichen Datensàtze stelle ich an einem anderen Ort in einem TreeView
dar. Dies ergibt aber eine viel schnellere Ladezeit der gleichen Daten,
obwohl ja dort in àhnlicher Weise die Datensàtze in einzelne Knoten und
dann
zur Tree geladen werden.
Nun meine Frage: Ist das ListView ein "langsames" Steuererlement oder
mache
ich da was "kompliziert" falsch?

this.livBahnhof.BeginUpdate();
this.livBahnhof.Items.Clear();
ListViewItem item;

foreach (DataRow oRow in
this.bahnhoefeDataSet.ListRestBahnhof.Rows)
{
item = new ListViewItem((string)oRow["DesName"]);
item.SubItems.Add((string)oRow["KtoKürzel"]);
item.SubItems.Add((string)oRow["GesKürzel"]);
item.Tag = (int)oRow["DesID"];
this.livBahnhof.Items.Add(item);
}
this.livBahnhof.EndUpdate();

Gibt es einen besseren Weg als das ListView, obwohl ja dies, wie ich
gelesen
habe, das Steuererlement sei, welches auch für den Expolorer verwendet
wurde.

Danke für alle Hinweise.
Gruss
Jakob Brunner, Switzerland

Ähnliche fragen