我用TreeView写了一个树,当我点击节点的副选框时候问题1  我如何同时选择这个节点下边的子节节点和孙节点
问题2  我是直接点击副选框的,并没有选择那个节点,可是我想得出我直接点击副选框节点的信息如 KEY,TEXT等难道非的用
FOR i=1 TO TreeView.Nodes.count-1
    if TreeView.Nodes(i).checked=true then
         .......
    end if
next
我感觉这个办法好笨的,不知道各位高手能否给点办法,分不够可以在加!

解决方案 »

  1.   

    1.
    Private  Sub  CheckChild(ByVal  Node  As  MSComctlLib.Node,  ByVal  bCheck  As  Boolean,  Optional  ByVal  bNext  As  Boolean  =  True,  Optional  ByVal  bChild  As  Boolean  =  True)  
             If  Not  Node  Is  Nothing  Then  
                   Node.Checked  =  bCheck  
                   If  Node.Children  And  bChild  Then  
                         Call  CheckChild(Node.Child,  bCheck,  True,  True)                '对子节点  
                   End  If  
                   If  bNext  Then  
                         Call  CheckChild(Node.Next,  bCheck,  True,  bChild)                    '对同一层节点  
                   End  If  
             End  If  
    End  Sub  2.
    Private Sub tvwDept_NodeCheck(ByVal Node As MSComctlLib.Node)
        MsgBox Node.Key & " " & Node.TEXT
    End Sub
    写到NodeCheck里即可
     
    Private  Sub  TreeView1_NodeCheck(ByVal  Node  As  MSComctlLib.Node)  
           Call  CheckChild(Node,  Node.Checked,  False,  True)                                        '处理子节点  
    End  Sub
      

  2.   

    2写错地方了
    “写到NodeCheck里即可”上面的都是第一个问题的
      

  3.   

    MSComctlLib 这是什么呀? 为什么我这里没有呢????
      

  4.   

    有个Microsoft windows Common Controls 6.0和Microsoft windows Common Controls 5.05.0是引用comctl32.ocx,6.0是引用mscomctl.ocx所以也是一个为MSComctlLib (6.0)一个是 ComctlLib(5.0)的区别了。
    只有引用6.0的版本才有_NodeCheck事件需要使用VB+SP5补丁:)