如何遍历Treeview的所有子节点?

myblind 2002-08-21 04:06:12
要求遍历指定节点下的所有子节点,包括子节点的子节点,以及子节点的Next节点。
...全文
1454 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ItSeeker 2002-08-22
  • 打赏
  • 举报
回复
递归
acptvb 2002-08-22
  • 打赏
  • 举报
回复
感谢您使用微软产品。

您可以如下例在Treeview中递归遍历鼠标点击的节点及其子节点:

Private Sub Form_Load()

Dim nodX As Node
Set nodX = TreeView1.Nodes.Add(, , "R", "Root")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C1", "Child 1")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C2", "Child 2")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C3", "Child 3")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C4", "Child 4")
Set nodX = TreeView1.Nodes.Add("C1", tvwChild, "C11", "Child 11")
Set nodX = TreeView1.Nodes.Add("C1", tvwChild, "C12", "Child 12")
Set nodX = TreeView1.Nodes.Add("C12", tvwChild, "C121", "Child 121")
Set nodX = TreeView1.Nodes.Add("C1", tvwChild, "C13", "Child 13")
Set nodX = TreeView1.Nodes.Add("C2", tvwChild, "C21", "Child 21")
Set nodX = TreeView1.Nodes.Add("C2", tvwChild, "C22", "Child 22")

nodX.EnsureVisible
TreeView1.Style = tvwTreelinesText ' Style 4.
TreeView1.BorderStyle = vbFixedSingle
End Sub

Private Sub traval(nodex As Node)

Dim count As Integer
Dim ChildNode As Node

count = nodex.Children

Debug.Print nodex.Text '或者对节点进行其他操作

If count > 0 Then

Set ChildNode = nodex.Child

traval ChildNode

For i = 2 To count
Set ChildNode = ChildNode.Next

traval ChildNode
Next

End If

End Sub


Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)

traval Node

End Sub

详细信息请参考:
TreeView Control
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cmctl198/html/vbobjtreeview.asp
- 微软全球技术中心 VB技术支持

本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查
(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
huangljc 2002-08-21
  • 打赏
  • 举报
回复
用递归可以解决
myblind 2002-08-21
  • 打赏
  • 举报
回复
这样会使不需要遍历的节点也被操作了。
Gulang68 2002-08-21
  • 打赏
  • 举报
回复
Dim NodeX As Node
For Each NodeX In TreeView1.Nodes
NodeX.Expanded = True
Next NodeX
================================================================
我是一个兵,来自老百姓。
myblind 2002-08-21
  • 打赏
  • 举报
回复
不,这些节点不一定是按顺序添加的。这样不行。
xbxsoft 2002-08-21
  • 打赏
  • 举报
回复
向高手求救,答者有分啦!
http://www.csdn.net/expert/topic/958/958179.xml?temp=.160351
xbxsoft 2002-08-21
  • 打赏
  • 举报
回复
For i = 1 To TreeView.Nodes.Count
TreeView.Nodes(i).Expanded = True
Next

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧