以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  树节点如何插入一个已有的节点  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=102326)

--  作者:zhsenchzhi
--  发布时间:2017/6/17 14:10:00
--  树节点如何插入一个已有的节点
一个 TreeView, 假设节点如下    A 下面有B, B 下面有 C, c下面有 d,e,f 等等 也就是说  B 是A的子节点, C 是B的子节点,以此类推

这个 TreeView 形成以后, a,b,c,d  等 也都已经形成  了  TreeNode

现在 我想 快速的 把 C 从 B下面 挪到  A下面,但是  def 等仍然是 C 下级节点

这样需要两步:

1   先将  C  脱离 原来的 父节点 B, 这个好做, 用 Nodes.remove  可以轻松移走

2  再将 c  放在 A 下面, 这个比较麻烦, 因为  Nodes 下面的 add  和 inset  后面的参数 都是  字符串,而不是一个 treenode, 而我这个 c 已经形成了treenode,如果用 add方法,势必c 下面的很多子节点也要重新生成,影响效率,也容易出错

请问 第二部有没有什么好方法,将一个已有的节点 放在另一个节点下面?



--  作者:有点蓝
--  发布时间:2017/6/17 15:16:00
--  
参考:http://www.foxtable.com/webhelp/scr/1988.htm
--  作者:zhsenchzhi
--  发布时间:2017/6/17 15:26:00
--  
这个页面里面的   add  和 insert 的参数 也都是  字符串呀

另外上移,下移,左移, 右移 也不适合,因为不知道会移到什么地方 

--  作者:有点蓝
--  发布时间:2017/6/17 15:33:00
--  
1、

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")

Dim a As WinForm.TreeNode = trv.Nodes(0)
Dim b As WinForm.TreeNode = a.Nodes(0)
Dim c As WinForm.TreeNode = b.Nodes(0)
b.Nodes.Remove(c)
a.basenode.Nodes.Add(c.basenode)


2、

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")

Dim a As WinForm.TreeNode = trv.Nodes(0)
Dim b As WinForm.TreeNode = a.Nodes(0)
Dim c As WinForm.TreeNode = b.Nodes(0)
b.Nodes.Remove(c)
Dim c1 As WinForm.TreeNode = a.Nodes.Add(c.Name,c.Text)
For Each c2 As WinForm.TreeNode In c.Nodes
    c1.Nodes.Add(c1.Name,c2.Text)
Next

--  作者:zhsenchzhi
--  发布时间:2017/6/17 15:55:00
--  
请问 为什么  a.basenode.Nodes.Add(c.basenode)
 这个使用方法 在 帮助文档里面找不到呢?

--  作者:有点蓝
--  发布时间:2017/6/17 16:08:00
--  
.net的用法。