Ereignis TreeView1_NodeMouseClick im Code auslösen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Ereignis TreeView1_NodeMouseClick im Code auslösen

    Hallo,

    ich habe mir mit Combobox für die Laufwerke und Treeview eine Art Dateiexplorer gebastelt. auslesen der Laufwerke, Verzeichnisse und unterverzeichnisse sowie Dateien funktioniert alles.

    Nun möchte ich beim Programmstart den Treeview gleich mit dem zuletzt verwendeten Verzeichnis öffnen. Bis zum Auffinden des dazugehörigen Nodes, Aufklappen und markieren dieses Nodes funktioniert es bereits auch.
    Nur müßte ich jetzt noch das Ereignis auslösen, welches dann in der Listview die im Ordner enthaltenen Dateien anzeigt.
    Zum aufrufen des Ereignisses fehlen mir aber die Parameter, die beim realen Click in e As TreeNodeMouseClickEventArgs übergeben werden.

    Kann ich die "rückwärts" auch irgendwie aus dem selectierten Node auslesen? (Zeile 31) Oder sollte ich ein ganz anderes Ereignis verwenden? (Den gleichen Code an zwei Stellen im Programm zu verwenden fände ich nicht so optimal)

    VB.NET-Quellcode

    1. Public Sub findNode(ByVal tn As TreeNode, ByVal name As String)
    2. 'in Anlehnung an http://blog.bigbasti.com/eine-treeview-durchsuchen-und-den-gefundenen-pfad-aufklappen/
    3. ' Diese Funktion durchläuft den ganzen Treenode bis ein Eintrag gefunden wird der dem Suchbegriff
    4. ' gleicht. Danach wird der Pfad der zu diesem TreeNode führt (zur Visualisierung) aufgeklappt
    5. Dim i As Integer
    6. Dim sPathName As String
    7. Dim tv As TreeView
    8. sPathName = name.Insert(3, "\") 'Im Treenode C:\\irgendwas
    9. tv = tn.TreeView
    10. For Each tnn As TreeNode In tn.Nodes
    11. If tnn.FullPath = sPathName Then
    12. Dim t As TreeNode = tnn
    13. For i = tnn.Level To 0 Step -1
    14. Try
    15. t = t.Parent
    16. t.Expand()
    17. Catch ex As Exception
    18. End Try
    19. Next
    20. tnn.Parent.Expand()
    21. 'aufgeklappten Pfad markieren
    22. tv.SelectedNode = tnn
    23. 'Dateien aus ausgewähltem Pfad anzeigen
    24. Dim exy As TreeNodeMouseClickEventArgs
    25. exy=tn.Nodes.... HIER KLEMMT ES
    26. Call TreeView1_NodeMouseClick(tv, exy)
    27. Exit Sub
    28. End If
    29. findNode(tnn, name)
    30. Next
    31. End Sub
    32. Private Sub TreeView1_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
    33. Dim newSelected As TreeNode = e.Node
    34. listView1.Items.Clear()
    35. Dim nodeDirInfo As DirectoryInfo = CType(newSelected.Tag, DirectoryInfo)
    36. ....
    Du könntest es mit (Me, Nothing)* probieren, aber viel sinnvoller wäre es, wenn Du den Inhalt ab Zeile#42 in ne eigene Sub packst und diese Sub einmal in TreeView1_NodeMouseClick aufrufst und einmal dort, wo Du gerade nicht weiterkommst, also:

    VB.NET-Quellcode

    1. Private Sub TreeView1_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
    2. DeineNeueSub(e.Node)
    3. End Sub
    4. Private Sub DeineNeueSub(Node As TreeNode)
    5. Dim newSelected As TreeNode = Node
    6. listView1.Items.Clear()
    7. Dim nodeDirInfo As DirectoryInfo = CType(newSelected.Tag, DirectoryInfo)
    8. '....

    natürlich musst Du dann an der Stelle, wo Du nicht weiterkommst, auch einen passenden Node übergeben.

    ##########

    * nee, klappt ja gar nicht, weil Du ja später den node brauchst. Daher nur der 2. Weg.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

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