TreeView Knoten hervorheben bei DragDrop mit .NodeMouseHover

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

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von roepke.

    TreeView Knoten hervorheben bei DragDrop mit .NodeMouseHover

    Hallo,
    soweit ich das verstanden habe, gibt es keinen 'MouseHover' Effekt für den TreeViewNode.
    Ich habe mir also selbst einen gebaut:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private tn_PreviousNode As TreeNode = Nothing
    2. Private Sub tv_ConectedModules_NodeMouseHover(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseHoverEventArgs) Handles tv_ConectedModules.NodeMouseHover
    3. If tn_PreviousNode IsNot Nothing Then
    4. tn_PreviousNode.ForeColor = Nothing
    5. tn_PreviousNode.BackColor = Nothing
    6. End If
    7. e.Node.ForeColor = Color.FromKnownColor(KnownColor.HighlightText)
    8. e.Node.BackColor = Color.FromKnownColor(KnownColor.Highlight)
    9. tn_PreviousNode = e.Node
    10. End Sub
    11. Private Sub tv_ConectedModules_MouseLeave(sender As Object, e As EventArgs) Handles tv_ConectedModules.MouseLeave
    12. If tn_PreviousNode IsNot Nothing Then
    13. tn_PreviousNode.ForeColor = Nothing
    14. tn_PreviousNode.BackColor = Nothing
    15. tn_PreviousNode = Nothing
    16. End If
    17. End Sub


    Der ist zwar etwas träge, aber er funktionert.
    Was ich aber nicht hinbekomme ist folgendes:
    An der Knoten des TreeView lassen sich mittels DragDrop Dateien anheften, die z.B. vom Windows Explorer hinein gezogen werden.
    Dabei halte ich ja die Datei mit der linken Maustaste fest.
    Leider wird dabei dann das .NodeMouseHover Event nicht ausgeführt.
    D.h. habe ich eine Datei am Mauszeiger, werden die Knoten des TreeView eben NICHT hervorgehoben.
    Ich hatte auf das .MouseEnter des TV gehofft um ihm den Fokus zu geben. Aber das wird mit gehaltener Maustaste bei DragDrop auch nicht gefeuert.
    Eine Idee, wie ich das lösen könnte?

    roepke schrieb:

    Leider wird dabei dann das .NodeMouseHover Event nicht ausgeführt.
    Das wird problematisch, denn zu diesem Zeitpunkt gehört die Mauskontrolle zu dem Fenster, von dem aus die Daten gezogen wurden.
    Wo Du was tun könntest, wäre das DragEnter-Event des TreeView, der Node selbst hat keins.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!