C# TreeView mit (sehr) vielen Nodes

second.name

Lieutenant
Registriert
Sep. 2009
Beiträge
691
Hallo Forum,
mir fehlt etwas der Ansatz, bzw. meine derzeitige Lösung arbeitet zu langsam...

Ich möchte den Inhalt einer Text-Datei zeilenweise in einem TreeView anzeigen. Das geht z.Z. auch ordentlich, könnte aber bei langen Dateien gern auch noch schneller funktionieren (.Update-Methode ist mir bekannt und wird genutzt).

...Das eigentliche Problem aber: In meiner GUI sollen Optionen den Inhalt des TreeViews verändern können. Wie aber programmiere ich es so, dass vor allem bei großen Datenmengen, der Inhalt schnell aktualisiert wird? Kompletten Baum neu füllen dauert wirklich ewig. (Die Datei müsste dabei nicht neu geschrieben/gelesen werden.)

Mir fehlt gerade leider der Ansatz. :(
 
Hallo second.name,

zwei Denkanstöße:
1. Partielles Aktualisieren: Versuche nicht, den gesamten Baum zu aktualisieren, sondern nur das nötige (angezeigte z. B.). Ich vermute mal, dass immer alles neugezeichnet wird. Das ist natürlich sehr langsam, also kannst Du da ansetzen.
2. Databinding: Eine andere - und vermutlich auch bessere - Methode ist das sogenannte Databinding. Falls Du dich damit nicht auskennst, recherchiere mal im Internet danach.
 
+1 für vorgeschlagene Variante 2 von Ichthys
Aber dazu fehlt ein bisschen Hintergrund, was du genau machen willst / wie die Daten vorliegen. Du liest sie ja wahrscheinlich nicht jedes Mal neu ein, hoffe ich? Ansonsten brauchst du dich nicht wundern, warums langsam ist ;)
 
Treeview nie direkt füllen. Erstelle eigene Nodes/Collection Variable und hänge die wenn sie gefüllt sind an Dein GUI-Treeview. Immer wenns geht bei großen Datenmengen vorher je nach Variable BeginLoad/Init/SuspendUpdates etc aufrufen.
Meinst Du mit Inhalt des Treeview verändern auch die Struktur oder nur die Texte der Knoten?
Wieso stellt man überhaupt eine Textdatei in einem Treeview dar? Bei XML würd ichs noch verstehen.

Was beim Treeview und Co generell immer hilft ist Visible auf false zu stellen wenn der per Code aktualisiert wird und erst danach wieder anzeigen. Hat sich seit VB5 nicht viel geändert ;)
 
Vielen Dank für die Infos - da muss ich noch etwas studieren.

Zum Hintergrund: Es wird ein CNC-Programm eingelesen (mitunter bis zu 10MB groß) und das Programm soll möglichst schnell, alle Zeilen finden, welche einen entsprechenden String enthalten (in diesen Fall "TOOL CALL") und diesen anhand von Einstellungen editieren. (...Im TreeView zunächst nur als Vorschau)
 

Anhänge

  • App.PNG
    App.PNG
    37,3 KB · Aufrufe: 266
Irgendwie leuchtet mir noch nicht ganz so ein wieso gerade ein Treeview wenn Du gar keine Hierarchien hast ;)
Wenn Du nur Zeilenweise trennen willst wäre ein DatagridView + Datatable schneller.
Wenn das Tool aber so oder so suchen und ersetzen soll ist die Anzeige aber doch eher zweitrangig oder soll das für jeden Treffer manuell zur Laufzeit angepasst werden?
 
Zurück
Oben