Pfad parsen und in TreeView

jccTeq

Erfahrenes Mitglied
Hey Leute,

ich muss eine Pfad-Angabe so parsen, daß am Ende eine TreeNodeCollection rauskommt. Geht sowas?

Also:

D:\My\Bla\Blubb\Sülz

nach


D:\
|-My
| |-Bla


und so weiter...

Gibts da schon was oder muss ich mir das selber proggen?

Danke!

Gruß, Hendrik
 
Ich hab grad keinen Code da aber eigentlich isses nicht sehr schwer . . .

Allerdings wenn du mit nem String mit nem Pfad drin arbeitest kommt doch immer nur 1 Reihe raus und kein richtiges Treeview? Is das wirklich das was du willst?


D:\
|-My
| |-Bla
| ||-Blub


Naja auf jeden Fall würd ich dafür ne rekursive Funktion schreiben

Code:
public TreeNode ParsePath(string path)
{
  //hier die position vom ersten \ ermitteln und aus dem Teil davor ne neue TreeNode machen
  //wenn hinter dem } noch was kommt wird die zweite Funktion aufgerufen und als path der hintere Teil und die TreeNodeCollection der erzeugten TreeNode übergeben
  //TreeNode zurückliefern
}
private void ParsePath2(string path, TreeNodeCollection col)
{
  //wieder die position vom ersten \ ermitteln und aus dem Teil davor ne neue TreeNode machen
  //TreeNode zu der Collection hinzufügen
  //Wenn hinter der Position noch was kommt sich selbst nochmal mit diesem String und der col der neuen TreeNode aufrufen
}

Ich habs nur mal kommentiert weil ich die normalen TreeNodes noch nie benutzt hab und die Methoden nicht genau kenne davon. Im Geschäft haben wir uns erweiterte Controls gekauft aber im Prinzip sollten die TreeNodes gleich funktionieren
 
Ja, das ist wirklich, was ich mir vorstelle. Ich will nur einen TreeNode erhalten, mit entsprechenden SubNodes. Keine Verzweigungen da drin. Nur den einen Zweig. Der Zweig wird nachher Teil eines Baumes. Es geht darum, eine virtuelle Verzeichnis-Struktur aus existierenden Verzeichnissen der Datenträger zu konstruieren.

Wie man sich soetwas im einzelnen selber baut, denke ich, bekomme ich selber hin. Meine Frage wäre eher, gibt es sowas im .NET schon oder muss ich mir das selber bauen?

Danke
 
Nee warum solls sowas denn schon im .NET geben? TreeView und Pfade haben doch vom Sinn her überhaupt nichts gemeinsam warum hätte MS da was einbauen sollen um nen TreeView mit nem Pfad zu füllen.

So ne Funktion wirst du auch in keiner anderen Programmiersprache finden.

Du könntest dich höchstens mal umsehen ob jemand vielleicht ein eigenes Control fürs Dateisystem geschrieben hat das ein Treeview anzeigt . .
 
Natürlich haben TreeView und Pfade etwas gemeinsam. Den Pfad nämlich. Ein Pfad ist doch im Prinzip nichts anderes, als ein Zweig eines Baumes. Dieser Baum - welcher aus mehreren Pfaden besteht, wird im TreeView optisch dargestellt. Wenn ich einen Pfad habe, müsste es ein leichtes sein, daraus ein TreeNode zu generieren. Diese generierten TreeNodes müsste man unter einem Wurzel-TreeNode nur zusammenfassen und hätte einen Baum mit Zweigen verschiedener Pfade. Ein Pfad sieht doch so aus:

root \ sub \ subsub \ subsubsub \ subsubsubsub

Der Zweig würde entsprechend so aussehen:


root (TreeNode)
|-sub (TreeNode, Teil von root.Nodes)
| |-subsub (TreeNode, Teil von sub.Nodes)
| | |-subsubsub (TreeNode, Teil von subsub.Nodes)
| | | |-subsubsubsub (TreeNode, Teil von subsubsub.Nodes)


Und aus solchen TreeNodes lässt sich doch problemlos Content für ein TreeView zusammensetzen.

Dafür muss es doch einen Parser geben... oder wirklich nicht?
 
Ich hab mir die Klasse mal eben angesehen aber wie erwartet auch nichts dazu gefunden.

TreeView, TreeNode, TreeNodeCollection sind dazu da um eine Baumansicht von Elementen darzustellen, die Funktion besteht wirklich nur in der ANZEIGE von der Hierachie die im Programm zusammengefügt wird, es steckt keine weitere Intelligenz hinter den Klassen weil sie universell für alles sind war so eine Hierachie halt abbilden kann.

Dass sie im Windows Explorer benutzt werden um die Pfade darzustellen heisst noch nicht dass das Control dazu gedacht ist Pfade darzustellen ich hab die Bäume schon für vieles benutzt im seltensten Fall für Ordner . . .
 
Ich meinte ja auch nicht nur , ob's soetwas im TreeView Control oder in TreeNode gibt. Ich bezog die Anfrage allgemein auf .NET, bzw. C#.
 
Zurück