如何覆盖TreeNode.Clone()方法?

时间:2012-11-24 13:02:46

标签: c# .net winforms

我有自己的MyTreeNode来自TreeNode的课程{/ 1}}。

public class MyTreeNode : System.Windows.Forms.TreeNode
{
    [Localizable(true)]
    public bool Foo { get; set; }
}

我尝试克隆节点:

MyTreeNode myTreeNode = new MyTreeNode();
myTreeNode.Foo = foo;
//
//And here is the problem, all fields have been copied to the new node but Foo
//
MyTreeNode newNode = (MyTreeNode)myTreeNode.Clone();

结果,newNode有空Foo字段。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

如果您希望在调用Foo时复制Clone(),则需要覆盖Clone()方法并添加逻辑来执行此操作。

您需要做的就是将其添加到MyTreeNode班级:

public override object Clone()
{
    var obj = (MyTreeNode)base.Clone();
    obj.Foo = this.Foo;
    return obj;
}

答案 1 :(得分:1)

在MyTreeNode类中尝试这样的事情

public override object Clone()
{
    object objReturn = base.Clone();
    ((MyTreeNode)objReturn).Foo = this.Foo;
    return objReturn;
}