2012-03-24 4 views
1

Я работаю над «DataGridView» в C# 3.5, в приложении «winforms».Как скопировать пользовательские свойства при создании клона

У меня есть пользовательский столбец «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, поэтому 'as CustomColumn' сделает clonedColumn переменной null, а следующая строка будет вызывать исключение NullReferenceException. –

+0

этот метод будет применяться, как и в классе CustomCell, где base.Clone() как возвратит объект класса –

2

Вы должны переопределить метод clone, чтобы включить ваши настраиваемые свойства. Как видно из этого link состояний,

При переопределении Clone ... не забудьте также скопировать значения любых свойств, которые были добавлены в производном классе.

код выглядит следующим образом:

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