以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 怎么能用AllNodes直接引用指定名称的节点呢?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=154341)

--  作者:龙潭春早
--  发布时间:2020/9/11 16:34:00
--  [求助] 怎么能用AllNodes直接引用指定名称的节点呢?
1、怎么能用AllNodes,直接引用指定名称的节点呢?

用AllNodes打开指定位置的节点,执行正常;
但是,用AllNodes打开指定名称的节点,却出错。
帮助中对AllNodes介绍的少。

2、代码

1) 用AllNodes打开指定位置的节点,执行正常:

Forms("窗口1").Controls("TreeView1")
tr.CollapseAll() \' 关闭所有节点
tr.SelectedNode = tr.AllNodes(18) \'选择节点
tr.Select() \'选择目录树( 的节点 )


2) 但是,用AllNodes打开指定名称的节点,却出错:

Forms("窗口1").Controls("TreeView1")
tr.CollapseAll() \' 关闭所有节点
tr.SelectedNode = tr.AllNodes(“表C”) \'选择节点
tr.Select() \'选择目录树( 的节点 )

--  作者:有点蓝
--  发布时间:2020/9/11 16:59:00
--  
没有这个用法。只能遍历判断名称
--  作者:龙潭春早
--  发布时间:2020/9/11 17:27:00
--  

下面这个办法,看着好像对,但是好像也不对,问题出在什么地方呢?

Dim tr As WinForm.TreeView = Forms("窗口1").Controls("TreeView1")

tr.SelectedNode.Name = "表C"

Dim nd As WinForm.TreeNode = tr.SelectedNode
Dim id As Integer = nd.index

output.show("节点的位置 id = " & id)

tr.CollapseAll()

tr.SelectedNode = tr.AllNodes(id)
tr.Select()
[此贴子已经被作者于2020/9/11 21:37:10编辑过]

--  作者:有点蓝
--  发布时间:2020/9/12 8:47:00
--  
AllNodes是一个List(of treenode)集合,集合的用法参考:http://www.foxtable.com/webhelp/topics/0217.htm

nd.index指节点的位置,这个位置并不是针对所有节点,而是同一个父节点的子节点的顺序。所以AllNodes(id)来定位某一个节点基本是不正确的,建议还是遍历,无法偷懒的

--  作者:龙潭春早
--  发布时间:2020/9/14 15:28:00
--  
嗯嗯 多谢