我想遍历的移除未选中的节点.
但是如果用:
for each node1 in treeview1.nodes
   if node1.check = false  then
        treeview1.nodes.remove(node1.key)
   end if
next结果会提示错误."控件的集合已经被修改"
怎么有效的解决这个问题.
另外,我也想用这个方法去掉.一级的父节点没有子节点.有没有类似取代的方法.我知道这个肯等测试不过的的原因.自己循环自己当然不行啦,可是treeview只能用for each这种遍历方式.
问一下取代的方法.能解决吗.先copy一份treeview...代码??怎么写啊?我是菜鸟...呵呵.

解决方案 »

  1.   

    我想到一个方法了.建个动态数组.然后.把要修改的,key加到数组里面.就可以了. 有没有更好的方法呢? 
      

  2.   

        With treeview1
            For IntI = 1 To .Nodes.Count - 1
               if .node.selected=false then
                   .nodes.remove(inti)  
               end if
           next
        end with
      

  3.   

        With treeview1 
            For IntI = 1 To .Nodes.Count  
              if .node.selected=false then 
                  .nodes.remove(inti)  
              end if 
          next 
        end with 
      

  4.   

        dim IntI as interger
        With treeview1 
            For IntI = 1 To .Nodes.Count  
              if .nodes.item(inti).selected=false then 
                  .nodes.remove(inti)  
              end if 
          next 
        end with
     不好意思,手写的,错了
      

  5.   


    Private Sub Command1_Click()
    Dim i As Integer
    For i = TreeView1.Nodes.Count To 1 Step -1
        If TreeView1.Nodes(i).Checked = False Then
            TreeView1.Nodes.Remove i
        End If
    Next
    End SubPrivate Sub Form_Load()
    TreeView1.Nodes.Add , , "A", "A"
    TreeView1.Nodes.Add , , "B", "B"
    TreeView1.Nodes.Add , , "C", "C"
    TreeView1.Nodes.Add , , "D", "D"
    End Sub
      

  6.   

    从最后一个结点开始循环就对了For i = TreeView1.Nodes.Count To 1 Step -1
        If TreeView1.Nodes(i).Checked = False Then
            TreeView1.Nodes.Remove i
        End If
    Next
    End Sub
      

  7.   

    从最后一个item开始检查并删除即可