2

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フィールドがあります。どうすればこれを修正できますか?

4

2 に答える 2

4

Fooを呼び出すときにもコピーする場合Clone()は、メソッドをオーバーライドし、Clone()そのためのロジックを追加する必要があります。

あなたがする必要があるのはあなたのMyTreeNodeクラスにこれを追加することです:

public override object Clone()
{
    var obj = (MyTreeNode)base.Clone();
    obj.Foo = this.Foo;
    return obj;
}
于 2012-11-24T13:14:49.257 に答える
1

MyTreeNodeクラスでこのようなことを試してください

public override object Clone()
{
    object objReturn = base.Clone();
    ((MyTreeNode)objReturn).Foo = this.Foo;
    return objReturn;
}
于 2012-11-24T13:12:39.357 に答える