Treeview Highlight Node on itemdrag over
All:
I am working on an an explorer form project where I have one treeview and one listview. I have all of my drag and drop functionality working as expected. However, I would like to highlight the treeview node the user is hovering over when draging items from one folder to another. This is the same functionality as windows provides in windows explorer.
Thus far I have been successful in changing the backcolor of the node using the dragover event. However, once I move away from the node, the backcolor does not change back to white. I have looked at the dragleave event but my code does not seem to work in reverse. Any ideas on how I can change the backcolor after moving away from a node???
Code:
Private Sub TreeView_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TreeView.DragOver
Dim loc As Point = (CType(sender, TreeView)).PointToClient(New Point(e.X, e.Y))
'node of the tree we are dragging to
Dim destNode As TreeNode = (CType(sender, TreeView)).GetNodeAt(loc)
' destNode.BackColor = Color.CadetBlue
End Sub
Re: Treeview Highlight Node on itemdrag over
Re: Treeview Highlight Node on itemdrag over
you need to loop through your treeview nodes + reset the original treeview backcolor before setting destNode backcolor:
vb Code:
Private Sub TreeView_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TreeView.DragOver
changeNodeBackColor(TreeView1.BackColor, Nothing)
Dim loc As Point = (CType(sender, TreeView)).PointToClient(New Point(e.X, e.Y))
'node of the tree we are dragging to
Dim destNode As TreeNode = (CType(sender, TreeView)).GetNodeAt(loc)
destNode.BackColor = Color.CadetBlue
End Sub
vb Code:
Private Sub changeNodeBackColor(ByVal backColor As Color, Optional ByVal node As TreeNode = Nothing)
If node IsNot Nothing Then node.BackColor = backColor
For Each n As TreeNode In If(node IsNot Nothing, node.Nodes, TreeView1.Nodes)
changeNodeBackColor(backColor, n)
Next
End Sub