我在treeview中添加了复选框了,但是有下面三个基本问题 
1,子节点被选中则父节点自动被选中怎么写代码? 
2,子节点全被取消选中状态时父节点自动取消选中怎么写代码? 
3,父节点选中则所有子节点全部被选中怎么写代码? 
我是用的VB,最好是VB代码,不行的话发下类似代码也行谢谢

解决方案 »

  1.   

    Private Sub tvOpenfromDB_NodeCheck(ByVal Node As MSComctlLib.Node)
        Dim cNode As Node
        If Left(Node.key, 1) = "f" Then
            For Each cNode In tvOpenfromDB.Nodes
                If Not cNode.Parent Is Nothing Then
                    If cNode.Parent.key = Node.key Then
                        cNode.Checked = Node.Checked
                    End If
                End If
            Next
        End If
        EnableBtnOpen
    End Sub
      

  2.   

    加上这两个函数就可以了,tvw是你的树形空间名
    Private Sub tvw_NodeCheck(ByVal Node As MSComctlLib.Node)
         Dim TmpNode As Node
        
        If Node.Checked = True Then
            Set TmpNode = Node.Child
            If TmpNode Is Nothing Then
                Node.Checked = True
            Else
                Node.Checked = True
                CheckNode TmpNode, True
            End If
            
        ElseIf Node.Checked = False Then
            Set TmpNode = Node.Child
            If TmpNode Is Nothing Then
                Node.Checked = False
            Else
                Node.Checked = False
                CheckNode TmpNode, False
            End If
            
            Set TmpNode = Node.Parent
            Do While Not TmpNode Is Nothing
                If TmpNode.Checked = True Then
                    TmpNode.Checked = False
                End If
                Set TmpNode = TmpNode.Parent
            Loop
        End If
    End Sub
    Private Function CheckNode(ByVal Nodx As Node, ByVal BCheck As Boolean) As Boolean
       If Not Nodx Is Nothing Then
            Nodx.Checked = BCheck
            CheckNode = CheckNode(Nodx.Child, BCheck)
            If CheckNode = False Then
                CheckNode = CheckNode(Nodx.Next, BCheck)
            End If
       Else
           CheckNode = False
       End If
    End Function