Foxtable(狐表)用户栏目专家坐堂 → [求助]展开某一层级的节点


  共有4455人关注过本帖树形打印复制链接

主题:[求助]展开某一层级的节点

帅哥哟,离线,有人找我吗?
chnfo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]展开某一层级的节点  发帖心情 Post By:2021/7/5 20:48:00 [显示全部帖子]

有一个树,节点数上万个。希望只展开到第N(如3)层。如果用遍历,如果节点的level<3,则expand。但效率很低…,差不多4秒。有什么办法快点?

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2021/7/5 21:38:00 [显示全部帖子]

如果指定展开第N层呢?不用level?

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2021/7/6 9:38:00 [显示全部帖子]

递归跟遍历几乎没有什么区别.假定要展开的层级为K

        For Each nod As WinForm.TreeNode In trv1.AllNodes
            If nod.Level < k Then
                nod.Expand
            End If
        Next

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2021/7/6 10:04:00 [显示全部帖子]

如果是那样的话,可能就用其它的方法了

        dim lst as new list(of WinForm.TreeNode)    ''因为就算树节点有10万行,遍历的速度也很快
        For Each nd As WinForm.TreeNode In trv1.AllNodes
            If nd.Level < k Then
                lst.add(nd)
            End If
        Next

        For Each nd As WinForm.TreeNode In lst 
                nd.Expand 
        Next

 回到顶部