Foxtable(狐表)用户栏目专家坐堂 → [分享]目录树重新生成后,保持之前节点展开状态的代码


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

主题:[分享]目录树重新生成后,保持之前节点展开状态的代码

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
[分享]目录树重新生成后,保持之前节点展开状态的代码  发帖心情 Post By:2012/11/22 11:35:00 [显示全部帖子]

我之前做了很多目录树,发现只要删除,增加节点,或者重新生成节点后就会发生目录树恢复原始的收起状况,很不方便。闲来写了一段代码,感觉和之前天老师的目录树只展开一个节点代码有相似之处,特拿来分享,不知道有没人发过!

Dim sz As New List(Of Integer)
Dim trv As WinForm.TreeView = e.form.controls(TreeView1)
For Each nd As WinForm.TreeNode In trv.AllNodes
    If nd.IsExpanded = True
        SZ.Add(nd.Index)
    End If
Next
   
'''变更目录树后,重生成的代码


For Each nd1 As WinForm.TreeNode In trv.AllNodes
   If sz.Contains(nd1.Index)
         nd1.Expand
   End If
Next

上面代码就能保证目录树节点变更后,整体展开状态不变,便于查看目录树变更状况。
不知道这代码还有没有更好的方法!


顺便再转享下天老师的目录树只展开一个节点的代码
If e.Node.Level = 0 Then
    For Each pg As WinForm.TreeNode In e.Sender.Nodes
        If pg.Name <> e.Node.Name Then
            pg.CollapseAll()
        End If
    Next
Else
    For Each pg As WinForm.TreeNode In e.Node.ParentNode.Nodes
        If pg.Name <> e.Node.Name Then
            pg.CollapseAll()
        End If
    Next  
End If

 回到顶部