Treeview.selectedNode.index vergleichen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von aPeu.

    Treeview.selectedNode.index vergleichen

    Hallo Community,

    wie kann ich zwei Treeviews miteinander vergleichen.

    Ich habe mehrere Treeview, welche eine Ordnerstruktur abbilden. Diese Ordnerstruktur ist in jedem Treeview unterschiedlich in der Sprache (aber vom aufbau her gleich).

    Nun wollte ich, dass wenn ich einen Knoten im 1. TV klicke, der gleiche Knoten vom Index her im 2.TV markiert ist. Leider bekomme ich das mit TV.selectedNode.index=TV2.selectednode.index nicht hin, da index nur ReadOnly ist.

    Kann mit jemand helfen und sagen wie ich es trotzdem hinbekommen?

    Vielen Dank schonmal

    MfG

    aPeu
    Ich glaub, so einfach geht das nicht, da index immer nur abhängig vom jeweiligen Parent den Index wiederspiegelt.
    ICh hab mal ein kleines workaround geschrieben, womit das gehen sollte.

    VB.NET-Quellcode

    1. Private nodeindarr As List(Of Integer)
    2. Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
    3. nodeindarr = New List(Of Integer)
    4. nodeindarr.Add(e.Node.Index)
    5. getnode(e.Node)
    6. Dim selNode As TreeNode
    7. Dim found As Boolean = True
    8. selNode = TreeView2.Nodes(nodeindarr(nodeindarr.Count - 1))
    9. If selNode IsNot Nothing Then
    10. For a = nodeindarr.Count - 2 To 0 Step -1
    11. If selNode.Nodes.Count > nodeindarr(a) Then
    12. selNode = selNode.Nodes(nodeindarr(a))
    13. Else
    14. found = False
    15. End If
    16. Next
    17. Else
    18. found = False
    19. End If
    20. If found Then TreeView2.SelectedNode = selNode
    21. End Sub
    22. Private Sub setnode(ByVal n As TreeNode)
    23. End Sub
    24. Private Sub getnode(ByVal n As TreeNode)
    25. Dim tn As TreeNode = n.Parent
    26. If tn IsNot Nothing Then
    27. nodeindarr.Add(tn.Index)
    28. getnode(tn)
    29. End If
    30. End Sub
    31. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    32. TreeView2.HideSelection = False
    33. End Sub


    Eventuell gehts auch einfacher, aber ich wüsste im Moment nicht wie

    Gruß mono
    Das ist meine Signatur und sie wird wunderbar sein!
    Hallo Mono,

    ich danke dir für den Code, habe ihn nach Anpassung an mein Fall (insgesamt vier TreeViews) zum Laufen gebracht.