以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  目录树问题?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=171612)

--  作者:fangdejin
--  发布时间:2021/9/4 14:03:00
--  目录树问题?
让非选中的节点关闭

代码是狐狸大人的:
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
For Each nd As WinForm.TreeNode In trv.AllNodes
    If nd.Level = e.Node.Level AndAlso nd.FullPath <> e.Node.FullPath then
        trv.Nodes(i).Collapse()
    End If
Next
e.Node.Expand()

其中的 i 不知道该循环哪个?
allnodes  提示index 超出
nodes     直接死循环 崩溃 

请示蓝版解答图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2021/9/4 14:05:00
--  
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
For Each nd As WinForm.TreeNode In trv.AllNodes
    If nd.Level = e.Node.Level AndAlso nd.FullPath <> e.Node.FullPath then
        nd.Collapse()
    End If
Next
e.Node.Expand()
--  作者:有点蓝
--  发布时间:2021/9/4 14:09:00
--  
这样效率更高,至于为什么,自己思考一下

If e.Node.parentnode IsNot Nothing Then
    For Each nd As WinForm.TreeNode In e.Node.parentnode.nodes
        nd.Collapse()
    Next
Else
    For Each nd As WinForm.TreeNode In e.sender.nodes
        nd.Collapse()
    Next
End If
e.Node.Expand()

--  作者:fangdejin
--  发布时间:2021/9/4 14:15:00
--  
OK,多谢篮版本.图片点击可在新窗口打开查看
--  作者:fangdejin
--  发布时间:2021/9/4 14:16:00
--  
分类遍历 更准确了.
第二个 好像也会崩溃.  

放的位置是 AfterExpandNode
[此贴子已经被作者于2021/9/4 14:28:10编辑过]

--  作者:有点蓝
--  发布时间:2021/9/4 15:00:00
--  
去掉e.Node.Expand()