对于treeview的节点访问我只发现了使用nodes属性,但是Nodes.Item(index)属性需要取得指定节点的index,在经过一系列的增加和删除操作以后,这个index已经不连续了,我如果才能遍历所有的节点呢?
treeview的node的几个属性可以帮助遍历树
1、parent '节点的父节点
2、child '节点的子节点
3、children 节点的子节点的个数
4、FirstSibling 属性 这个属性返回对 TreeView 控件中的 Node 对象的第一个相邻对象的引用。
5、LastSibling 属性 这个属性返回对 TreeView 控件中的 Node 对象的最后相邻节点的引用。
示例:
Private Sub TreeView1_NodeClick(ByVal Node As Node)
Dim strText As String
Dim n As Integer
'设置 n 为第一个相邻节点的索引。
n = Node.FirstSibling.Index
'在字符串变量中安放第一个相邻节点的文本和换行。
strText = Node.FirstSibling.Text & vbLF
While n <> Node.LastSibling.Index
'当 n 不是最后相邻节点的索引时,转向下一个相邻的节点
'并将它的文本安放到字符串变量中。
strText = strText & TreeView1.Nodes(n).Next.Text & vbLF
'设置 n 为下一个节点的索引。
n = TreeView1.Nodes(n).Next.Index
Wend
MsgBox strText '显示结果。
End Sub
另一种方法:
Do While Fn <= .Nodes.Count
'获得信息
If .Nodes(NodeKey).Children <> 0 Then
NodeKey = .Nodes(NodeKey).Child.Key
ElseIf .Nodes(NodeKey).Next Is Nothing = False Then
NodeKey = .Nodes(NodeKey).Next.Key
Else
Do While .Nodes(NodeKey).Parent.Next Is Nothing
If .Nodes(NodeKey).Parent Is Nothing = False Then NodeKey = .Nodes(NodeKey).Parent.Key
Loop
Do While .Nodes(NodeKey).Parent.Next Is Nothing = False
NodeKey = .Nodes(NodeKey).Parent.Next.Key
Exit Do
Loop
End If
Fn = Fn + 1
Loop