C# 如何重写TreeNode.Clone()方法?

C# 如何重写TreeNode.Clone()方法?,c#,.net,winforms,C#,.net,Winforms,我有自己的类MyTreeNode来自TreeNode: 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,

我有自己的类
MyTreeNode
来自
TreeNode

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
字段为空。如何修复此问题?

在MyTreeNode类中尝试类似的方法

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

如果您希望在调用
Clone()
时也复制
Foo
,则需要重写
Clone()
方法并添加执行此操作的逻辑

您只需将此项添加到
MyTreeNode
类:

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