2010-11-09 127 views
1

我有很多节点的节点等这孩子,孩子的孩子的树状....树视图树节点复制

我想那些全部内容复制并粘贴到另一个节点。 我不想使用克隆方法,因为它会影响从其复制的原始节点的对象。

+0

克隆方法的主要思想是创建一个对象的副本,而不是别的,你的意思是什么影响原始节点? – Ash 2010-11-09 07:08:06

+0

达意味着...我添加一个node'a'通过克隆node'a'填充到treeview。后来如果我添加一些内容到node'a'树状结构是闪烁的 – curiosity 2010-11-09 07:36:39

+0

所以你问题是闪烁?您描述的其他行为不会那样做。克隆不会影响原始。 – leppie 2010-11-09 08:05:51

回答

1

尝试使用递归这样

private void IterateTreeNodes(TreeNode originalNode, TreeNode rootNode) 
{ 
    foreach (TreeNode childNode in originalNode.Nodes) 
    { 
    TreeNode newNode = new TreeNode(childNode.Text); 
    newNode.Tag = childNode.Tag; 
    treeView2.SelectedNode = rootNode; 
    treeView2.SelectedNode.Nodes.Add(newNode); 
    IterateTreeNodes(childNode, newNode); 
    } 
} 

// copy nodes from treeView1 to treeView2 
private void button1_Click(object sender, EventArgs e) 
{ 
    foreach (TreeNode originalNode in treeView1.Nodes) 
    { 
    TreeNode newNode = new TreeNode(originalNode.Text); 
    newNode.Tag = originalNode.Tag; 
    treeView2.Nodes.Add(newNode); 
    IterateTreeNodes(originalNode, newNode); 
    } 
} 

它从http://windowsclient.net/blogs/faqs/archive/2006/05/30/how-do-i-clone-or-copy-all-the-nodes-from-one-treeview-control-to-another.aspx

0

您可以在每个步骤中使用任何遍历算法

的代码片段,您可以就可以把所经过的节点到一个对象,并把这个对象在一个objectList ...

所有最好的...