不要急,出错了:)Do While (nodX.Next Is Nothing And nodX.Key <> mNode.Key)
  Set nodX = nodX.Parent
Loop还要修改一下:(

解决方案 »

  1.   

    改进如下:Private Sub chgChild(mNode As MSComctlLib.Node, selected As Boolean)
    '/*改变所有子节点状态
    Dim nodX As Node
    Dim nodTmp As Node
        If mNode.Child Is Nothing Then Exit Sub
        Set nodX = mNode.Child
        Do While (Not nodX.Key = mNode.Key)
            If selected Then
                nodX.Image = "selall"
            Else
                nodX.Image = "selno"
            End If
            If Not nodX.Child Is Nothing Then   '/*有子节点,指向子节点
                Set nodX = nodX.Child
            Else                                '/*如果没有子节点,则指向下一个兄弟节点
                If Not nodX.Next Is Nothing Then    '/*如果有下一个兄弟节点,则指向下一个兄弟节点
                    Set nodX = nodX.Next
                Else                                '/*兄弟已尽,指向父节点,然后指向下一个兄弟节点
                    Do
                        Set nodX = nodX.Parent
                        If nodX.Key = mNode.Key Then Exit Sub   '/*已指到最初节点,可以结束遍历
                    Loop While (nodX.Next Is Nothing And nodX.Key <> mNode.Key)
                    Set nodX = nodX.Next
                    If nodX Is Nothing Then Exit Sub    '/*没有相关兄弟节点,可以结束遍历:)
                End If
            End If
        Loop
    End Sub
      

  2.   

    http://www.csdn.net/expert/topic/203/203473.shtm这是很久以前的一个贴子,当时我没有办法去实现这个功能所以放弃了树状权限的修改今天回过头再去做的时候,发现原来也并没有想像中的难所以我们应该相信自己,相信VB:)
      

  3.   

    我的做法:
    '/*如果变为选中状态,则所有子节点变为选中
    '/*如果变为未选中状态,则所有子节点变为未选中Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
        Dim nodx As Node   
        Dim i As Integer
        Dim k As Integer
        Dim j As Integer
        
        If Node.Checked = True And Node.Children <> 0 Then
            
            k = Node.Children
            Node.Child.Checked = True
            Set Node = Node.Child
            If k > 1 Then
                For i = 1 To k - 1
                    If Node.Children <> 0 Then
                        Set nodx = Node.Child
                        nodx.Checked = True
                        For j = 1 To Node.Children - 1
                            Set nodx = nodx.Next
                            nodx.Checked = True
                        Next j
                    End If
                    Set Node = Node.Next
                    Node.Checked = True
                Next i
            Else
                If Node.Children <> 0 Then
                    Set nodx = Node.Child
                    nodx.Checked = True
                    For j = 1 To Node.Children - 1
                        Set nodx = nodx.Next
                        nodx.Checked = True
                    Next j
                End If
                'Set Node = Node.Next
                Node.Checked = True
            End If
        ElseIf Node.Checked = False And Node.Children <> 0 Then
            k = Node.Children
            Node.Child.Checked = False
            Set Node = Node.Child
            If k > 1 Then
                For i = 1 To k - 1
                    If Node.Children <> 0 Then
                        Set nodx = Node.Child
                        nodx.Checked = False
                        For j = 1 To Node.Children - 1
                            Set nodx = nodx.Next
                            nodx.Checked = False
                        Next j
                    End If
                    Set Node = Node.Next
                    Node.Checked = False
                Next i
            Else
                If Node.Children <> 0 Then
                    Set nodx = Node.Child
                    nodx.Checked = False
                    For j = 1 To Node.Children - 1
                        Set nodx = nodx.Next
                        nodx.Checked = False
                    Next j
                End If
                'Set Node = Node.Next
                Node.Checked = False
            End If
        End If
        Node.EnsureVisible 
    End Sub
      

  4.   

    使用checkbox只有两种状态而我现在要的是三种状态(即包含混沌状态)所以我没有使用checked,而是利用图标代替了
      

  5.   

    http://263.csdn.net/FileBBS/files/2001_10/T_744_1.zip以上为文档列表中放的一张效果图片