希望高手们能够指点指点。十分感谢。

解决方案 »

  1.   

    'HitTest 方法(ListView 和 TreeView 控件)示例
    '这个例子在 TreeView 控件中添加几个 Node 对象。在选择了一个 Node 对象之后,可以将它拖动到任何其它 Node。为试用此例,要在窗体上安放 TreeView 和 ImageList 控件,并在窗体的声明部分粘贴该代码。运行此例,并且在附近拖动一些 Node 对象来观察结果。'声明全局变量。Dim indrag As Boolean '指示拖放操作的标志。
    Dim nodX As Object '要拖动的项。Private Sub Form_Load()
       '在 Imagelist 控件中加载一个位图。
       Dim imgX As ListImage
       Dim BitmapPath As String
       BitmapPath = "C:\Program Files\Microsoft Visual Studio\Common\Graphics\icons\mail\mail01a.ico"
       Set imgX = ImageList1.ListImages.Add(, , LoadPicture(BitmapPath))
       
       '初始化 TreeView 控件,并创建若干节点。
       TreeView1.ImageList = ImageList1
       Dim nodX As Node   '创建树。
       Set nodX = TreeView1.Nodes.Add(, , , "Parent1", 1)
       Set nodX = TreeView1.Nodes.Add(, , , "Parent2", 1)
       Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Child 1", 1)
       Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Child 2", 1)
       Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Child 3", 1)
       Set nodX = TreeView1.Nodes.Add(2, tvwChild, , "Child 4", 1)
       Set nodX = TreeView1.Nodes.Add(3, tvwChild, , "Child 5", 1)
       nodX.EnsureVisible '展开树以显示全部节点。
    End SubPrivate Sub TreeView1_MouseDown _
    (Button As Integer, Shift As Integer, x As Single, y As Single)
       Set TreeView1.SelectedItem = TreeView1.HitTest(x, y)
       Set nodX = TreeView1.SelectedItem '设置要拖动的项。
    End SubPrivate Sub TreeView1_MouseMove _
    (Button As Integer, Shift As Integer, x As Single, y As Single)
       If Button = vbLeftButton Then '指示一个拖动操作。
          indrag = True '设置 flag 为 true。
          '使用CreateDragImage方法设置拖动图标。
          TreeView1.DragIcon = TreeView1.SelectedItem.CreateDragImage
          TreeView1.Drag vbBeginDrag '拖动操作。
       End If
    End SubPrivate Sub TreeView1_DragDrop _
    (Source As Control, x As Single, y As Single)
       Dim txtTemp As String '用于交换Node文本的临时变量
       If TreeView1.DropHighlight Is Nothing Then
          Set TreeView1.DropHighlight = Nothing
          indrag = False
          Exit Sub
       Else
          If nodX Is TreeView1.DropHighlight Then Exit Sub
    '      Cls
            
          '交换Node.Text
          txtTemp = nodX.Text
          nodX.Text = TreeView1.DropHighlight.Text
          TreeView1.DropHighlight.Text = txtTemp
          Set TreeView1.SelectedItem = TreeView1.DropHighlight
          
          Set TreeView1.DropHighlight = Nothing
          indrag = False
       End If
    End SubPrivate Sub TreeView1_DragOver(Source As Control, x As Single, y As Single, State As Integer)
       If indrag = True Then
          '设置 DropHighlight 为鼠标坐标。
          Set TreeView1.DropHighlight = TreeView1.HitTest(x, y)
       End If
    End Sub