用递归的方法是不是更高效?
这样的方法遍历treeview有问题,不能遍历到所有节点:
dim n as node
for each n in treeview1.nodes
    if n.tag="abc" then
       n.selected=true
    end if
next多谢。

解决方案 »

  1.   

    用递归的效率反而更低.大多数情况下使用递归是解决复杂算法,增加程序的可读性.
    就你目前的要求来看,完全没有必要使用递归.
    用For循环是解决这个问题的捷径.
    只是你的代码中间少写了一句,以至于没有达到预期效果.
    修改如下:
    dim n as node
    for each n in treeview1.nodes
        if n.tag="abc" then
           n.selected=true
           exit for             ''就是少写了这一句
        end if
    next
      

  2.   

    MoQi_123(老莫的春天),谢谢,另外,我用的那种方法是不是必须得把节点都展开?有的比较深的节点遍历不到,我不知道为什么。For i = 1 To tvTreeView.Nodes.Count
             tvTreeView.Nodes(i).Expanded = True
    Next i
      

  3.   

    使用key直接定位,何须遍历。
    tvTreeView.Nodes(key).Expanded = True
    tvTreeView.Nodes(key).selected = True
      

  4.   

    有同样的值的情况,怎么处理我也不知道,请高人指教吧。
    --------------------------------------------------最好的办法是用KEY因为key不允许重复而且方便使用TreeView1.Nodes(key).Expanded = True  展开TreeView1.Nodes(key).Selected = True  选中
      

  5.   

    如果已知条件就是tag值,怎么定位阿?
      

  6.   

    再问一下,
    已知节点的tag值,怎么定位在treeview上让这个节点选中?
      

  7.   

    dim n as node
    for each n in treeview1.nodes
        if n.tag="abc" then
           n.selected=true
           exit for             ''就是少写了这一句
        end if
    next这样为什么遍历不到所有节点。奇怪。
      

  8.   

    Private Sub Command4_Click()
    Dim n As Node
    For Each n In TreeView1.Nodes
        If n.Tag = "abc" Then
           n.Selected = True       TreeView1.SetFocus       MsgBox n.key & "   " & n.Text       Exit For
        End If
    NextEnd SubP
      

  9.   

    treeview上让这个节点选中TreeView1.SetFocus
    加上这一句
      

  10.   

    多谢多谢,我是按照你上面的写的,但是下面的代码,没有判断所有节点的tag值,有的较深的节点没有判断啊,但是我把所有的节点都展开一次的话,他就能遍历到了,这是问什么啊?谢谢。
    For Each n In TreeView1.Nodes
        If n.Tag = "abc" Then
           n.Selected = True       TreeView1.SetFocus       MsgBox n.key & "   " & n.Text       Exit For
        End If
    Next