在《vb.net 在ListView内部拖放项》一文中,我们了解ListView 控件内部拖放它的项时,
我们需要处理如下三个事件:ItemDrag 事件、DragEnter 事件以及DragDrop 事件,并且需要在合适的事件中引发 DoDragDrop 方法达到拖放的效果。
而在 TreeView 控件内部拖放它的节点时候,处理方法也与 ListView 控件类似,需要引起我们注意的是,TreeView 控件不支持选择多个节点的情况,而且改变某个节点的位置时,该节点的所有子节点也随之改变位置,同理,移除某个节点时,该节点之下所有的子节点也会被移除,因此我们需要在代码中判断节点是否是移到其子节点的位置上。
下面我们就来看如何用代码来实现拖放节点:
一、首先为窗体添加一个 TreeView 控件,并且为它添加上一个完整的树状结构数据,如下图所示:

图一:界面视图
二、详细代码:
Private Sub TreeView1_ItemDrag(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles TreeView1.ItemDrag
TreeView1.DoDragDrop(TreeView1.SelectedNode, DragDropEffects.Move)
End Sub
Private Sub TreeView1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TreeView1.DragEnter
e.Effect = DragDropEffects.Move
End Sub