我在Private Sub AdministrationTree_NodeCheck(ByVal Node As MSComctlLib.Node)事件里把
 AdministrationTree.Nodes(Node.Index).Checked = False
在 
Private Sub cmdOK_Click()
For ii = 2 To AdministrationTree.Nodes.count
        If AdministrationTree.Nodes(ii).Checked = True Then
         txt1.Text = txt1.Text & "," & AdministrationTree.Nodes(ii).Text
     End If
    Next
假如Node.Index=18
如果上面的Checked值设成False那么遍历TreeView时,AdministrationTree.Nodes(18).Text的值不应该被输出到 txt1.Text里,但实际上它被输出了!
谁能告诉我为什么?怎样解决这问题? 

解决方案 »

  1.   

    你确定AdministrationTree.Nodes(Node.Index).Checked为false吗试一下在事件中这样
    AdministrationTree.Nodes(Node.Index).Checked = TRUE
      

  2.   

    干吗AdministrationTree.Nodes(Node.Index).Checked = TRUE?
    它本身就是true啊?
      

  3.   

    楼主这样是错误的,在NodeCheck事件里无论你设为真也好,假也好.最后的状态还是你用鼠标点击时的状态,因为在这个事件里是改不了NodeCheck属性的.
      

  4.   

    那怎么改变NodeCheck属性的属性呢?没办法了吗?
      

  5.   

    楼上说得对。不可能改变Nodecheck的属性的!
      

  6.   

    在treeview事件中即使你强行改变了check的值,但在过程结束后,treeview会改回来的.
    例如:原来check=false,点击check后,会为true,即使你在该事件中设置了false,但过程结束后它仍然为true.
    这个事件就是这样,确保事件的引发不会使对象状态改变.
      

  7.   

    你为什么要在nodecheck里让checked=false?你究竟是要checked还是不checked?
      

  8.   

    先设置 :
    TreeView1.Checkboxes = True