Hi @Abdelmalek Aitouche ,
I am trying to move nodes between two treeview controls
You can refer to the following example to move nodes between two treeview controls.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim node As TreeNode = treeView1.Nodes.Add("A")
node.Nodes.Add("A1")
node.Nodes.Add("A2")
Dim node2 As TreeNode = TreeView1.Nodes.Add("C")
node2.Nodes.Add("C1")
node2.Nodes.Add("C2")
node = treeView2.Nodes.Add("B")
node.Nodes.Add("B1")
node.Nodes.Add("B2")
TreeView2.AllowDrop = True
TreeView1.AllowDrop = True
AddHandler Me.TreeView1.DragDrop, AddressOf Me.Tree_DragDrop
AddHandler Me.TreeView1.DragOver, AddressOf Me.Tree_DragOver
AddHandler Me.TreeView1.MouseDown, AddressOf Me.Tree_MouseDown
AddHandler Me.TreeView2.DragDrop, AddressOf Me.Tree_DragDrop
AddHandler Me.TreeView2.DragOver, AddressOf Me.Tree_DragOver
AddHandler Me.TreeView2.MouseDown, AddressOf Me.Tree_MouseDown
End Sub
Private Sub Tree_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Dim tree As TreeView = CType(sender, TreeView)
Dim node As TreeNode = tree.GetNodeAt(e.X, e.Y)
tree.SelectedNode = node
If node IsNot Nothing Then
tree.DoDragDrop(node, DragDropEffects.Copy)
End If
End Sub
Private Sub Tree_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
Dim tree As TreeView = CType(sender, TreeView)
e.Effect = DragDropEffects.None
Dim nodeSource As TreeNode = CType(e.Data.GetData(GetType(TreeNode)), TreeNode
If nodeSource IsNot Nothing Then
If Not nodeSource.TreeView Is tree Then
Dim pt As Point = New Point(e.X, e.Y)
pt = tree.PointToClient(pt)
Dim nodeTarget As TreeNode = tree.GetNodeAt(pt)
If nodeTarget IsNot Nothing Then
e.Effect = DragDropEffects.Copy
tree.SelectedNode = nodeTarget
End If
End If
End If
End Sub
Private Sub Tree_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
Dim tree As TreeView = CType(sender, TreeView)
Dim pt As Point = New Point(e.X, e.Y)
pt = tree.PointToClient(pt)
Dim nodeTarget As TreeNode = tree.GetNodeAt(pt)
Dim nodeSource As TreeNode = CType(e.Data.GetData(GetType(TreeNode)), TreeNode)
nodeTarget.Nodes.Add(CType(nodeSource.Clone(), TreeNode))
nodeTarget.Expand()
End Sub
Result of my test:
Hope it could be helpful.
Besides, if you need further assistance, please let me know.
Best Regards,
Xingyu Zhao
*
If the answer is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.