Try this for dragging from Treeview1 to Treeview2
Private Sub TreeView1_ItemDrag(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles TreeView1.ItemDrag
Dim nodX As TreeNode
'Gets the text from the node and passes it to the DragDrop Procedure
nodX = CType(e.Item, TreeNode)
DoDragDrop(nodX.Text, DragDropEffects.Copy)
End Sub
Private Sub TreeView1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TreeView1.MouseDown
'Gets the node from the position the MouseDown Event was started
Dim NodX As TreeNode = TreeView1.GetNodeAt(New Drawing.Point(e.X, e.Y))
'Sets the node to be selected
TreeView1.SelectedNode = NodX
End Sub
Private Sub TreeView2_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TreeView2.DragEnter
e.Effect = DragDropEffects.Copy
End Sub
Private Sub TreeView2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TreeView2.DragDrop
'Creates a new Treenode, sets the text of the Treenode to the Text from the DropEvent Argument
Dim nodX As New TreeNode(e.Data.GetData(DataFormats.Text))
TreeView2.Nodes.Add(nodX)
End Sub
This should work in the same way for a ListView as well. Just substitute a ListItem for the TreeNode.