<TreeListView> Node Drag And Drop

2020. 2. 12. 14:12VB.NET

728x90
반응형

 

<TreeListView> 

TreeListView Property 변경

 AllowDrop = True

 AllowDefaultDragDrop = True

 

 

ItemDragEventArgs 

    Private Sub treeView_ItemDarag(sender As Object, e As ItemDragEventArgs) Handles trv_Model.ItemDrag
        If e.Button = MouseButtons.Left Then
            DoDragDrop(e.Item, DragDropEffects.Move)
        End If
    End Sub

ItemDragEventArgs 

Private Sub Drag_n_Drop_Functions(sender As Object, e As ItemDragEventArgs) Handles trv_Model.ItemDrop

    Dim targetPoint As Point = DirectCast(e, WinControls.ListView.EventArgClasses.TreeListViewItemDropEventArgs).MousePosition
    Dim targetNode As TreeListNode = DirectCast(e, WinControls.ListView.EventArgClasses.TreeListViewItemDropEventArgs).TargetNode
    targetNode = trv_Model.GetItemAt(targetPoint)

    Dim draggedNode As TreeListNode = DirectCast(e, EventArgClasses.TreeListViewItemDropEventArgs).Item(0)

    Debug.Print(String.Format("Origin({2}) Rowindex : {0} ||| Index : {1}", draggedNode.RowIndex, draggedNode.Index, draggedNode.Text))
    Debug.Print(String.Format("target({2}) Rowindex : {0} ||| Index : {1}", targetNode.RowIndex, targetNode.Index, targetNode.Text))

    If draggedNode Is Nothing Or draggedNode Is Nothing Then Exit Sub

    If Not (draggedNode.Equals(targetNode)) AndAlso Not ContainsNode(draggedNode, targetNode) Then

        If draggedNode.Level = 3 AndAlso targetNode.Level = 3 Then
            draggedNode.Remove()
            targetNode.ParentNode.Nodes.Insert(draggedNode, targetNode.Index)
            draggedNode.Expand()
        End If

    End If
End Sub

 

 

728x90
반응형