2012-03-24 4 views
1

"winforms"응용 프로그램의 C# 3.5에서 "DataGridView"를 작업하고 있습니다.복제를 만들 때 사용자 지정 속성을 복사하는 방법

나는 사용자 정의 열이 "MaskTextColumn"입니다, 나는 그것을 좋아하는 일부 사용자 지정 속성이 : 마스크, "PromptChar는"

내가 "MaskTextColumn"의 클론을 만드는 중이라서 내 고객의 특성은 복사되지 않습니다 등 새 개체로, 나는 그것을 사용자 정의 속성 값으로 복제하려고합니다.

답변

2

당신은 사용자 정의 파생 클래스의 clone 메소드를 오버라이드 (override) 할 필요가있다. 이 같은

뭔가 :

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()은 클래스의 개체를 반환합니다. –

2

사용자 지정 속성을 포함하려면 복제 방법을 재정의해야합니다. 이 link 상태로서

복제를 오버라이드 (override) ... 또한 파생 된 클래스에 추가 된 속성의 값을 복사해야합니다.

코드는 다음과 같이 진행됩니다

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