Treeview bestimmten Ordner auswählen und öffnen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von x90cr.

    Treeview bestimmten Ordner auswählen und öffnen

    Ich habe einen String der so aussieht: "C:\Users\Administrator\Desktop\eng"

    Und einen gefüllten Treeview, bei dem die Unterverzeichnisse erst gesucht werden, sobald der Übergeordnete Ordner geöffnet wird.

    Jetzt soll mittels des oben genannten Strings der Treeview soweit aufgeklappt werden das der Ordner "eng" geöffnet und markiert ist und falls nötig auch bis dort hin gescrollt ist.
    Nach langem suchen habe ich leider keine Lösung gefunden wie ich das am besten umsetze und hoffe hier wieder auf schnell hilfe.
    Danke, aber der dortige Weg ist sehr unübersichtlich für einen VB Anfänger wie mich.

    Nach weiterem Suchen habe ich jetzt eine Anfängertaugliche Lösung gefunden.
    Falls noch jemand das gleiche Problem hat hier bitte:

    Die Variable "folderpathcache" enthält den Pfad z.B. "C:\Users\Administrator\Desktop\eng"

    VB.NET-Quellcode

    1. Dim NodeCol As TreeNodeCollection = TreeView1.Nodes
    2. Dim pathpart() As String
    3. pathpart = folderpathcache.Split("\\")
    4. pathpart(0) = pathpart(0) & "\"
    5. For i As Integer = 0 To pathpart.Length - 1 Step 1
    6. For Each folder As TreeNode In NodeCol
    7. If folder.Text = pathpart(i) Then
    8. folder.Expand()
    9. TreeView1.SelectedNode = folder
    10. NodeCol = folder.Nodes
    11. Exit For
    12. Else
    13. End If
    14. Next
    15. Next

    ja, das ist sehr gut, und wendet dasselbe Prinzip an :thumbsup:

    Das bei mir ist komplizierter, weil meine Methode sich einem Pfad auch nur annähern können muss. Also gegeben sei im TV ein Baum mit nur 2 Ebenen, und wenn nun "C:\Blable\pipapo\UndNochwas" angefordert wird, dann liefert mein ApproachResult "C:\Blabla", sowie die Information, dass nur 2 PfadSegmente gefunden werden konnten (damit die fehlenden Segmente beispielsweise generiert werden können).

    Du kannst mal versuchen, Node.Expanded und Node.Selected erst nach der Schleife zu setzen. Manipulationen am Control sind verhältnismäßig "teuer", und da ist besser, das erst zu machen, wenn der endgültige Treenode denn gefunden ist.
    Ich glaub, man braucht sogar nur dessen Parent zu expanden, und alle noch darüber liegenden geschlossenen Nodes erweitern sich automatisch.
    Glaub ich - sicher bin ich nicht.