Sämtliche Nodes mit Pfad ausgeben im Treeview

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von rotherford.

    Sämtliche Nodes mit Pfad ausgeben im Treeview

    guten Abend visual basic Profis,

    ich suche eine Möglichkeit durch eine Schleife im Treeview alle! Nodes auszulesen (auch Children) mit ihren komplette Pfade. (keine Directory)
    Danach möchte ich einen neuen Node anknüpfen.
    Folgender Code gibt mir leider nur die oberste Ebene der Nodes mit Namen aus.

    VB.NET-Quellcode

    1. For Each node In TreeView1.Nodes
    2. MsgBox(node.ToString)
    3. Next


    Fragen:
    Wie kann ich alle Nodes mit Pfad auslesen?
    Wie kann ich dann an diesem Pfad einen neuen Node anknüpfen?
    Danke für die schnellen Antworten :) ,

    @kinsi
    eine Funktion ist klar die aufgerufen wird wenn ich eine "for each" Schleife habe, welche mir überhaupt die "sub"nodes rausbekomme.
    Oder meinst du das anders? :)

    @rotherford
    Jap an eine Rekursion ("for each") Schleife hatte ich auch gedacht, aber wie bekomme ich jetzt die pfadnahmen
    oder versteh ich etwas falsch ? :)

    mfg brouwny
    Was genau meinst du mit Pfad?
    Enthalten deine Knoten Dateipfade?

    Oder Willst du es etwa so machen:

    Quellcode

    1. ParentNode(Name = "Test1") {
    2. ChildNode(Name = "Test2") {
    3. ChildNode[..]
    4. }
    5. }


    Pfad = Test1.Test2.[..]

    Ach, Und: Rekursion <> For Each

    Liebe Grüße
    /nicht getestet
    ne, mit "Pfad" meine ich folgendes: ("_____________"= Leerzeichen)

    _+---Parent
    _____ I-----Unterpunkt1
    _____ I-----Unterpunkt2
    _____ I-----Unterpunkt3
    _____ I-----Unterpunkt4
    _____________ I-----Unterpunkt4.1
    _______________________ I-----Unterpunkt4.1.1


    Jetzt wäre der Pfad (für Unterunkt4.1.1) :
    Parent/Unterpunkt4/Unterpunkt4.1/Unterpunkt4.1.1 [das Verbindende Glied ("/") kann ja auch ein anderes sein]

    dieser Pfad soll zu jeden Punkt oder Unterpunkt ausgegeben werden.
    aber ich möchte auch diesen Unterpunkt4.1.1 am Ende wieder ansprechen (um weiter nodes darunter anzufügen)
    [gibt es da eine Art Index mit der die Ebene angeben kann?, da Index bei treeview ja lediglich die nodes in einer Ebene abzählt]


    Rekursion ist keine for each??? dachte das wäre auch eine Schleife gewesen?
    Genau, das meinte ich auch ;)

    Mit Rekursion wird das dann etwas schwieriger, ich guck es mir mal kurz an.

    Nein Rekursion ist, wenn sich eine Methode Immer wieder selbst aufruft, um Daten zu erhalten od. halt Children etc..
    Weil wenn man z.B alle Controls einer Form bekommen möchte, nützt es nichts Form.Controls() abzurufen,
    Da im Zweifelsfall nur die ContainerControls zurückgeliefert werden.


    VB.NET-Quellcode

    1. Private Sub PrintRecursive(ByVal n As TreeNode)
    2. Static Path As New System.Text.StringBuilder
    3. Path.Append(n.Text)
    4. Path.Append("/"c)
    5. MessageBox.Show(Path.ToString())
    6. Dim aNode As TreeNode
    7. For Each aNode In n.Nodes
    8. PrintRecursive(aNode)
    9. Next
    10. End Sub
    11. ' Call the procedure using the top nodes of the treeview.
    12. Private Sub CallRecursive(ByVal aTreeView As TreeView)
    13. Dim n As TreeNode
    14. For Each n In aTreeView.Nodes
    15. PrintRecursive(n)
    16. Next
    17. End Sub


    Ich bin mir nicht sicher, ob das funktioniert, hab ich nicht getestet.

    Liebe Grüße
    /nicht getestet

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „rotherford“ ()