最近被逼维护一个VB程序,碰到这样一个问题
删除TreeView某个子节点的问题
现在的代码如下:
Dim tmp As Node
Set tmp = ....
For i = 0(或者1,记不清楚了) To Nodes.children
  If aaaa Then
     Nodes.Remove tmp.Key
  End If  tmp = tmp.Next
Next现在的问题就是如果aaaa条件满足,则Remove之后,再调用tmp = tmp.Next提示item已经被删除请问如何用其他方法解决这个问题,实现相同功能

解决方案 »

  1.   


    tmp = tmp.Previous不一样出错
      

  2.   

    Dim tmp As Node 
    For i = Nodes.Count to 1 step -1
      set tmp = Nodes(i)
      If aaaa Then 
        Nodes.Remove tmp.Key 
      End If 
    Next 
      

  3.   

    For i =  Nodes.children  to  0 step -1
      If aaaa Then 
        Nodes.Remove tmp.Key 
      End If   tmp = tmp.Next 
    Next 
      

  4.   


    Private Sub Delete_Item(Optional bAll As Boolean = False, Optional bDelSelf As Boolean = False)
            Dim i As Long
            Dim oNode As Node
            
            Select Case bAll
                Case False
                    With tvw.SelectedItem
                        'For i = .Children To 1 Step -1
                        For i = 1 To .Children
                            If .Child.Text <> "" Then
                                tvw.Nodes.Remove .Child.Index
                            End If
                        Next
                    End With
                    
                    With tvw
                        If bDelSelf And .SelectedItem.Children = 0 Then
                            .Nodes.Remove .SelectedItem.Index
                        End If
                    End With
                Case True
                    With tvw.Nodes
                        For i = .Count To 1 Step -1
                            Set oNode = .Item(i)
                            If oNode.Text <> "" Then
                                tvw.Nodes.Remove .oNode.Index
                            End If
                        Next
                    End With
                Case Else
                
            End Select
    End Sub
      

  5.   

    哦这样啊,我给高手们一个建议哈
    就是把它的结构Cone复制一个新的,然后逐个的追加新形成的这个数据集.
      

  6.   

    现在是这样解决的
    Dim xx As Node
    Dim tmp As Node
    For i =  Nodes.children  to  0 step -1 
      If aaaa Then 
        Set tmp = xx
        Nodes.Remove xx.Key 
        Set xx = tmp
        Goto Continue
      End If   Set xx= xx.Next
    Continue: 
    Next