刚遇到一个问题,在ie中打开它的收藏夹侧边栏,在其中拖动一个链接到其他的文件夹中时,会在鼠标下方出现一个半透明的被拖动链接的图标和文字说明请问这是如何实现的,还有就是当被拖动对象在文件夹上面时,目标文件夹所在的一整行都被高亮了,而如过拖动对象处于与他同级的链接上时会出现一条初横线提示目标drop后的位置,请问这种效果如何实现,能在vb中使用吗?谢谢!

解决方案 »

  1.   

    可以,在msdn上有一个专门讲如何做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 = "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 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 '将标志设置为 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)
       If TreeView1.DropHighlight Is Nothing Then
          Set TreeView1.DropHighlight = Nothing
          indrag = False
          Exit Sub
       Else
          If nodX = TreeView1.DropHighlight Then Exit Sub
          Cls
          Print nodX.Text & " dropped on " & TreeView1.DropHighlight.Text
          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