当前位置:编程学习 > C#/ASP.NET >>

复制treeview

当我选中了treeview中的某一个节点之后,怎样去复制这个节点下面的所有子节点呢?就是复制以这个节点为根节点的子树,然后再粘贴到另一个节点上,作为这个节点的一个子节点,并且要保持子树的层次关系不变,有没有什么好方法?
用遍历去解决的话,如何在复制的时候保持子树的层次关系? --------------------编程问答-------------------- 用递归啊。难道你不会? --------------------编程问答-------------------- 记录当前treeview的节点,然后从这个节点开始遍历下面的子节点,递归调用。 --------------------编程问答--------------------
引用 1 楼 caozhy 的回复:
用递归啊。难道你不会?


用递归的话,将选中节点下面所有的子节点选出来,存到一个数组里,但是粘贴的时候如何去保持这种树形结构呢?子节点已经取出来了,后面的粘贴还没想明白,暂时觉得需要先对数组按层次结构进行排序,然后进行广度优先搜索,找到每一个节点的父节点,将此节点添加进去,这样应该可以吧? --------------------编程问答--------------------
引用 1 楼 caozhy 的回复:
用递归啊。难道你不会?


子节点可以通过遍历得到,可是粘贴的时候应该如何保持子树的整体结构?怎样操作比较方便呢? --------------------编程问答--------------------
引用 1 楼 caozhy 的回复:
用递归啊。难道你不会?


我想知道有没有那种整体复制子树的方法,这样的话,觉得好几个遍历,还要递归,排序,略有点麻烦。 --------------------编程问答-------------------- 递归遍历的时候,就可以复制这颗子树啊。 --------------------编程问答--------------------
引用 6 楼 classfun 的回复:
递归遍历的时候,就可以复制这颗子树啊。


可是我想把复制之后的树粘贴到另外的节点之下,这个节点在复制之后再选择,这要如何去做? --------------------编程问答-------------------- 没用过treeview哈,,我想问一下,树的话,节点是知道它的父节点以及子节点的吧? 那把整个树(A树)先复制一份(B树)。。 复制的时候,你要知道 A树的节点与B树的节点一一对应
假如要复制A树某个节点(A1节点)往下的子树到A树的另一个节点(A2节点)下吧?,,那么你就找到B树对应的那个节点(B1节点),将B1节点的父节点指向A2。也就是说,B树就少掉了一块儿了。。但是你的A树,就是你要的结果!!  操作完后,就再继续复制一下A树,下一次复制也这么用!! --------------------编程问答--------------------
引用 8 楼 dekenis 的回复:
没用过treeview哈,,我想问一下,树的话,节点是知道它的父节点以及子节点的吧? 那把整个树(A树)先复制一份(B树)。。 复制的时候,你要知道 A树的节点与B树的节点一一对应
假如要复制A树某个节点(A1节点)往下的子树到A树的另一个节点(A2节点)下吧?,,那么你就找到B树对应的那个节点(B1节点),将B1节点的父节点指向A2。也就是说,B树就少掉了一块儿了。。……


这个方法应该可行,我想的一个方法就是把选中的节点下的子树取出来,存到一个新建的treeview里,然后把新建的treeview根节点作为后来粘贴的节点下的一个子节点,但是具体实现上还有点困惑。有一个TreeNode.Clone 方法,我先试试看。谢谢你了~~~
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,