最近被逼维护一个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已经被删除请问如何用其他方法解决这个问题,实现相同功能
删除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已经被删除请问如何用其他方法解决这个问题,实现相同功能
tmp = tmp.Previous不一样出错
For i = Nodes.Count to 1 step -1
set tmp = Nodes(i)
If aaaa Then
Nodes.Remove tmp.Key
End If
Next
If aaaa Then
Nodes.Remove tmp.Key
End If tmp = tmp.Next
Next
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
就是把它的结构Cone复制一个新的,然后逐个的追加新形成的这个数据集.
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