当我选中了treeview中的某一个节点之后,怎样去复制这个节点下面的所有子节点呢?就是复制以这个节点为根节点的子树,然后再粘贴到另一个节点上,作为这个节点的一个子节点,并且要保持子树的层次关系不变,有没有什么好方法?
用遍历去解决的话,如何在复制的时候保持子树的层次关系?

解决方案 »

  1.   

    记录当前treeview的节点,然后从这个节点开始遍历下面的子节点,递归调用。
      

  2.   

    没用过treeview哈,,我想问一下,树的话,节点是知道它的父节点以及子节点的吧? 那把整个树(A树)先复制一份(B树)。。 复制的时候,你要知道 A树的节点与B树的节点一一对应
    假如要复制A树某个节点(A1节点)往下的子树到A树的另一个节点(A2节点)下吧?,,那么你就找到B树对应的那个节点(B1节点),将B1节点的父节点指向A2。也就是说,B树就少掉了一块儿了。。但是你的A树,就是你要的结果!!  操作完后,就再继续复制一下A树,下一次复制也这么用!!
      

  3.   


    这个方法应该可行,我想的一个方法就是把选中的节点下的子树取出来,存到一个新建的treeview里,然后把新建的treeview根节点作为后来粘贴的节点下的一个子节点,但是具体实现上还有点困惑。有一个TreeNode.Clone 方法,我先试试看。谢谢你了~~~