我正在尝试将树视图节点复制到treenodecollection以进行其他处理。当我在下一行执行treeview.nodes.clear()
时,我的treenodecollection变为空。您能否告诉我如何将树视图节点复制到treenodecollection并保留节点的副本,即使在调用实际树视图节点的Clear方法后也是如此?
TreeNodeCollection tnc = null;
private TypeIn()
{
tnc = treeView1.Nodes;
treeView1.Nodes.Clear();
//Now my tnc becomes null, but I want the tnc for future use.
}
答案 0 :(得分:3)
TreeNode对象是可克隆的,所有子树都是完整的。这就是为什么你可以使用包含子节点的List的子树。
List<TreeNode> tnc = null;
private TypeIn()
{
tnc = new List<TreeNode>();
foreach (TreeNode n in treeView1.Nodes)
{
tnc.Add((TreeNode)n.Clone());
}
treeView1.Nodes.Clear();
}
答案 1 :(得分:0)
您可以通过序列化treeView并将其反序列化为新对象来实现深层复制。
看看这个: How do you do a deep copy of an object in .NET (C# specifically)?