我正在「Winforms」應用程序的C#3.5中使用「DataGridView」。如何在製作克隆時複製自定義屬性
我有一個自定義列「MaskTextColumn」,我有一些自定義屬性在裏面,如:面膜, 「PromptChar」等
當我製作的「MaskTextColumn」克隆我的客戶性質是不可複製到新對象,我想使用自定義屬性值進行克隆。
我正在「Winforms」應用程序的C#3.5中使用「DataGridView」。如何在製作克隆時複製自定義屬性
我有一個自定義列「MaskTextColumn」,我有一些自定義屬性在裏面,如:面膜, 「PromptChar」等
當我製作的「MaskTextColumn」克隆我的客戶性質是不可複製到新對象,我想使用自定義屬性值進行克隆。
您需要覆蓋您的自定義派生類中的Clone方法。
事情是這樣的:
public override object Clone()
{
var clonedColumn = base.Clone() as CustomColumn;
clonedColumn.CustomProp = this.CustomProp;
return clonedColumn;
}
您應該重寫克隆方法以包含您的自定義屬性。由於這link狀態,
當重寫克隆......一定要還複製添加到派生類中,任何 屬性的值。
的代碼是這樣的:
public override Object Clone()
{
object clonedObject = base.Clone();
MaskTextColumn clonedColumn = clonedObject as MaskTextColumn;
clonedColumn.PromptChar = this.PromptChar;
// .. more property settings here
return clonedColumn;
}
我不認爲這會工作。 'base.Clone()'的返回值將是一個MaskTextColumn,所以'作爲CustomColumn'將使clonedColumn變量爲null,下一行將拋出NullReferenceException。 – 2012-03-24 20:32:59
此方法將適用於CustomCell類,其中base.Clone()將返回Class的對象 – 2012-03-26 08:09:25