2012-03-24 96 views
1

我正在「Winforms」應用程序的C#3.5中使用「DataGridView」。如何在製作克隆時複製自定義屬性

我有一個自定義列「MaskTextColumn」,我有一些自定義屬性在裏面,如:面膜, 「PromptChar」等

當我製作的「MaskTextColumn」克隆我的客戶性質是不可複製到新對象,我想使用自定義屬性值進行克隆。

回答

2

您需要覆蓋您的自定義派生類中的Clone方法。

事情是這樣的:

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

我不認爲這會工作。 'base.Clone()'的返回值將是一個MaskTextColumn,所以'作爲CustomColumn'將​​使clonedColumn變量爲null,下一行將拋出NullReferenceException。 – 2012-03-24 20:32:59

+0

此方法將適用於CustomCell類,其中base.Clone()將返回Class的對象 – 2012-03-26 08:09:25

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; 
}