【发布时间】:2015-07-09 18:58:44
【问题描述】:
我有一个TreeView。它的 TreeNodes 有一个 TreeNode.Tag 类型为 InfoForNode 的属性。它包含字段public DataGridViewRow[] Properties,我在其中存储有关节点的所有信息。
现在我想复制这个节点(以及来自Node.Tag 的所有属性)并将其粘贴到同一个TreeView 中。我尝试使用TreeNode.Clone() 方法:
foreach (var node in TreeQuery.SelectedNodes)
{
_copiedNodes.Add((TreeNode)node.Clone());
}
它可以工作,但是复制的节点和原始节点指向 DataGridViewRow[] Properties 的同一个实例(因为它是引用类型,而 Clone() 执行节点的浅拷贝)。
请解释一下,在这种情况下我怎样才能获得正确的副本?
【问题讨论】: