如题。多谢牛人!

解决方案 »

  1.   

    Private Sub TreeView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    If TreeView1.HitTest(x, y) Is Nothing Then
    Else
        TreeView1.HitTest(x, y).Selected = True
    End If
    End Sub
      

  2.   

    '一个很好的实例
    Option ExplicitPrivate Enum ObjectType
        otNone = 0
        otFactory = 1
        otGroup = 2
        otPerson = 3
        otFactory2 = 4
        otGroup2 = 5
        otPerson2 = 6
    End EnumPrivate SourceNode As Object
    Private SourceType As ObjectType
    Private TargetNode As Object'  返回节点类型
    Private Function NodeType(test_node As Node) As ObjectType
        If test_node Is Nothing Then Exit Function
        Select Case Left$(test_node.Key, 1)
            Case "f"
                NodeType = otFactory
            Case "g"
                NodeType = otGroup
            Case "p"
                NodeType = otPerson
        End Select
    End Function'  设置ImageList和TreeView
    Private Sub Form_Load()
    Dim i As Integer
    Dim factory As Node
    Dim group As Node
    Dim person As Node    ' 将图片加入ImageList.
        For i = 1 To 6
            TreeImages.ListImages.Add , , TreeImage(i).Picture
        Next i
        
        ' 将ImageList在TreeView中显示.
        OrgTree.ImageList = TreeImages
        
        ' 创建节点
        Set factory = OrgTree.Nodes.Add(, , "f R & D", "R & D", otFactory, otFactory2)
        Set group = OrgTree.Nodes.Add(factory, tvwChild, "g Engineering", "Engineering", otGroup, otGroup2)
        Set person = OrgTree.Nodes.Add(group, tvwChild, "p Cameron, Charlie", "Cameron, Charlie", otPerson, otPerson2)
        Set person = OrgTree.Nodes.Add(group, tvwChild, "p Davos, Debbie", "Davos, Debbie", otPerson, otPerson2)
        person.EnsureVisible
        Set group = OrgTree.Nodes.Add(factory, tvwChild, "g Test", "Test", otGroup, otGroup2)
        Set person = OrgTree.Nodes.Add(group, tvwChild, "p Able, Andy", "Andy, Able", otPerson, otPerson2)
        Set person = OrgTree.Nodes.Add(group, tvwChild, "p Baker, Betty", "Baker, Betty", otPerson, otPerson2)
        person.EnsureVisible
        
        Set factory = OrgTree.Nodes.Add(, , "f Sales & Support", "Sales & Support", otFactory, otFactory2)
        Set group = OrgTree.Nodes.Add(factory, tvwChild, "g Showroom Sales", "Showroom Sales", otGroup, otGroup2)
        Set person = OrgTree.Nodes.Add(group, tvwChild, "p Gaines, Gina", "Gaines, Gina", otPerson, otPerson2)
        person.EnsureVisible
        Set group = OrgTree.Nodes.Add(factory, tvwChild, "g Field Service", "Field Service", otGroup, otGroup2)
        Set person = OrgTree.Nodes.Add(group, tvwChild, "p Helms, Harry", "Helms, Harry", otPerson, otPerson2)
        Set person = OrgTree.Nodes.Add(group, tvwChild, "p Ives, Irma", "Ives, Irma", otPerson, otPerson2)
        Set person = OrgTree.Nodes.Add(group, tvwChild, "p Jackson, Josh", "Jackson, Josh", otPerson, otPerson2)
        person.EnsureVisible
        Set group = OrgTree.Nodes.Add(factory, tvwChild, "g Customer Support", "Customer Support", otGroup, otGroup2)
        Set person = OrgTree.Nodes.Add(group, tvwChild, "p Klug, Karl", "Klug, Karl", otPerson, otPerson2)
        Set person = OrgTree.Nodes.Add(group, tvwChild, "p Landau, Linda", "Landau, Linda", otPerson, otPerson2)
        person.EnsureVisible
    End Sub'  调节TreeView大小
    Private Sub Form_Resize()
        OrgTree.Move 0, 0, ScaleWidth, ScaleHeight
    End Sub'  保存节点信息以便拖动
    Private Sub OrgTree_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
        Set SourceNode = OrgTree.HitTest(x, y)
    End Sub'  拖动节点
    Private Sub OrgTree_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
        If SourceNode Is Nothing Then Exit Sub    If Button = vbLeftButton Then
            
            '  选择节点并设置拖动图标
            SourceType = NodeType(SourceNode)
            Set OrgTree.SelectedItem = SourceNode
            
            OrgTree.DragIcon = IconImage(SourceType)
            OrgTree.Drag vbBeginDrag
        End If
    End Sub'  检验拖动是否有效
    Private Sub OrgTree_DragDrop(Source As Control, x As Single, y As Single)
        If SourceNode Is Nothing Then Exit Sub    If Not (OrgTree.DropHighlight Is Nothing) Then
            '  设置源节点和目标节点
            Set SourceNode.Parent = OrgTree.DropHighlight
            Set OrgTree.DropHighlight = Nothing
        End If    Set SourceNode = Nothing
        SourceType = otNone
    End Sub'  设置拖动的显示效果
    Private Sub OrgTree_DragOver(Source As Control, x As Single, y As Single, State As Integer)
    Dim target As Node
    Dim highlight As Boolean    If SourceNode Is Nothing Then Exit Sub
        
        Set target = OrgTree.HitTest(x, y)
            
        If target Is TargetNode Then Exit Sub
        Set TargetNode = target
        
        highlight = False
        If Not (TargetNode Is Nothing) Then
            If NodeType(TargetNode) + 1 = SourceType Then _
                highlight = True
        End If
        
        If highlight Then
            Set OrgTree.DropHighlight = TargetNode
        Else
            Set OrgTree.DropHighlight = Nothing
        End If
    End Sub