想在两个TreeView控件中Node节点上实现拖拽功能,比如左右两个TreeView控件,拖拽右边控件中的一个Node节点(Node1)到左边TreeView控件的一个Node节点(Node2)上,使Node1成为Node2的孩子,如何实现?
很着急,呵呵,老大们如果嫌分儿少的话,可以再加:)

解决方案 »

  1.   

    我也想做类似这样的功能,呵呵如果是Label之类的就好做了,但想TreeView或者是List之类的就不知道怎么控制了。
      

  2.   

    如果node1没有孩子的话是很容易的.
      

  3.   

    '在窗体创建两个treeview,左边treeview1,右边treeview2Dim xPos As Single
    Dim yPos As Single
    Private Sub Form_Load()
    TreeView1.Nodes.Add , , , "1"
    TreeView1.Nodes.Add 1, 4, , "2"
    TreeView1.Nodes.Add 1, 4, , "3"TreeView2.Nodes.Add , , , "4"
    TreeView2.Nodes.Add 1, 4, , "5"
    TreeView2.Nodes.Add 1, 4, , "6"ListView1.ListItems.Add , , 888
    End SubPrivate Sub TreeView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    xPos = x
    yPos = y
    End SubPrivate Sub TreeView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
    If TreeView1.HitTest(xPos, yPos) Is Nothing Then
        MsgBox "不能移动到该节点", vbCritical
    Else
        TreeView1.Nodes.Add TreeView1.HitTest(xPos, yPos).Index, 4, , TreeView2.SelectedItem.Text
        TreeView2.Nodes.Remove TreeView2.SelectedItem.Index
                
    End IfEnd Sub
      

  4.   

    'form_load事件中
    ListView1.ListItems.Add , , 888
    这一句不要,不好意思
      

  5.   

    '不好意思,什么的代码错误,鼠标坐标值控制不好,用下面的:
    '另外,treeview2的节点的"拖"很讲究技巧,你拖住后要往下拉一下,然后再拉到treeview1中
    Dim xPos As Single
    Dim yPos As Single
    Private Sub Form_Load()
    TreeView1.Nodes.Add , , , "1"
    TreeView1.Nodes.Add 1, 4, , "2"
    TreeView1.Nodes.Add 1, 4, , "3"TreeView2.Nodes.Add , , , "4"
    TreeView2.Nodes.Add 1, 4, , "5"
    TreeView2.Nodes.Add 1, 4, , "6"
    End SubPrivate Sub TreeView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    xPos = x
    yPos = y
    Me.Caption = xPos & yPos
    End SubPrivate Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    xPos = x
    yPos = y
    End SubPrivate Sub TreeView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
    xPos = x
    yPos = y
    If TreeView1.HitTest(xPos, yPos) Is Nothing Then
        MsgBox "不能移动到该节点", vbCritical
    Else
        TreeView1.Nodes.Add TreeView1.HitTest(xPos, yPos).Index, 4, , TreeView2.SelectedItem.Text
        TreeView2.Nodes.Remove TreeView2.SelectedItem.Index
                
    End IfEnd SubPrivate Sub TreeView1_OLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single, State As Integer)
    If Not TreeView1.HitTest(xPos, yPos) Is Nothing Then TreeView1.SelectedItem = TreeView1.HitTest(xPos, yPos)
    End Sub