2012-03-24 5 views
1

"winforms"アプリケーションでC#3.5の "DataGridView"を使用しています。クローン作成時にカスタムプロパティをコピーする方法

私はカスタム列が「MaskTextColumn」である必要があり、私はそれが好きで、いくつかのカスタムプロパティを持っている:マスク、 「PromptCharは」

i「はMaskTextColumn」のクローンを作っています、私の顧客のプロパティがコピーされていないなど新しいオブジェクトには、私はそれがカスタムプロパティ値と同じようにクローンを作成したい。

答えて

2

カスタム派生クラスのCloneメソッドをオーバーライドする必要があります。このような

何か:

public override object Clone() 
{ 
    var clonedColumn = base.Clone() as CustomColumn; 
    clonedColumn.CustomProp = this.CustomProp; 
    return clonedColumn; 
} 
+0

私はこれがうまくいくとは思いません。 'base.Clone()'の戻り値はMaskTextColumnになりますので、 'as CustomColumn'はclonedColumn変数をnullにし、次の行はNullReferenceExceptionをスローします。 –

+0

このメソッドはCustomCellクラスにそのまま適用されます。ここでbase.Clone()はClassのオブジェクトを返します –

2

カスタムプロパティを含めるには、クローンメソッドをオーバーライドする必要があります。クローンをオーバーライドするときは、このlink状態として、

...また、派生クラスに追加された任意の プロパティの値をコピーしてください。

コードは次のようになります:

public override Object Clone() 
{ 
    object clonedObject = base.Clone(); 
    MaskTextColumn clonedColumn = clonedObject as MaskTextColumn; 
    clonedColumn.PromptChar = this.PromptChar; 
    // .. more property settings here 
    return clonedColumn; 
} 
関連する問題