以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [分享]目录树重新生成后,保持之前节点展开状态的代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=26021)

--  作者:gaoyong30000
--  发布时间: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

--  作者:sunbrain
--  发布时间:2012/11/22 11:42:00
--  
谢谢,顶你
--  作者:hanxuntx
--  发布时间:2012/11/22 15:09:00
--  

学习收藏


--  作者:小猪鑫鑫
--  发布时间:2012/11/22 19:17:00
--  
收藏学习
--  作者:xmj09663
--  发布时间:2012/11/22 22:07:00
--  
天老师?
天老师是哪个?  怎么木有听说过