Announcement

Collapse
No announcement yet.

schnelles Füllen einer listView mit vielen Daten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • schnelles Füllen einer listView mit vielen Daten

    Hallo,
    ich habe folgendes Problem und bin für jeden Tipp dankbar.

    Für eine Anwendung möchte ich Float-Werte in einer listView darstellen.
    Allerdings ist es eine Menge in den Dimensionen von bis zu 250*1000 Werten. Die Werte (werte[,]) sind in einer extra Klasse mit entsprechenden Zugriffsmethoden gekapselt.
    Was muß ich dafür tun, daß die listview schnell erstellt wird und ein scrollen durch die Daten nicht mit rucken und zucken verbunden ist?
    Die Daten werden übrigens nur dargestellt, es erfolgt keine Auswahl oder gar Änderung der Daten. Es geht einzig um die schnelle Darstellung.

    Wie stelle ich das am geschicktesten an, bzw. gibt es Alternativen zur listView?

    vielen Dank schonmal und viele Grüße

  • #2
    Hallo Joe,

    versuche einmal die Methoden BeginUpdate() vor dem Befüllen mit Daten und anschließend EndUpdate().
    Dies dürfte das Befüllen des ListViews deutlich beschleunigen.

    viele Grüße
    Andreas

    Comment


    • #3
      Hiho,

      danke schonmal. begin- und endupdate habe ich eingesetzt. Wird aber nicht besser. Die 1000 spalten-köpfe (columns.add(......) )gingen noch schnell, aber dann geht alles in die knie. könnte das evtl. was damit zu tun haben, daß ich jedes item einzeln der liste zufüge?

      Grüße
      JoeM

      Comment


      • #4
        Hallo,

        meine Testergebnisse beim Eintragen von 500 Einträgen in ein ListView sehen wie folgt aus:

        a) Load-Ereignis: 652 Millisekunden
        b) Load-Ereignis + AddRange: 631 Millisekunden
        c) InitializeComponent: 4 Millisekunden

        Wenn das ListView innerhalb der InitializeComponent-Methode gefüllt wird, geht es auch sehr zügig zur Sache.

        ..gibt es Alternativen zur listView
        Das DataGridView-Control unterstützt den virtuellen Modus, so dass dort beliebig viele Datensätze verwaltet werden können:

        1. DataGridView-Columns festlegen
        2. DataGridView-Eigenschaft VirtualMode auf true setzen
        3. Prototyp-Row generieren und mit der AddCopies-Methode vervielfältigen
        4. Ereignisbehandlung für CellValueNeeded implementieren, um die leeren Zellen mit den darzustellenden Daten zu füllen. Dieses Ereignis wird nur im virtuellen Modus immer dann ausgelöst, wenn eine ungebundene Zelle im DataGridView beim Scrollen erstmalig sichtbar wird
        5. Daten aus einer List<T>-Kollektion entsprechend der e.RowIndex- und e.ColumnIndex-Position zuweisen

        Comment

        Working...
        X