Добавить свойство datagridviewcolumn designtime
У меня есть эта проблема, я создал свой собственный datagridviewcolumn и хотел бы добавить некоторые свойства, которые вы можете изменить при редактировании во время разработки... вот мой код:
private int nMaxLength;
[Description("Fondoscala valore"), Category("Sea")]
public int MaxLength
{
get { return nMaxLength; }
set { nMaxLength = value; }
}
и на самом деле все в порядке, когда вы открываете редактор столбцов, вы видите это свойство в категории Sea, и вы можете изменить его, но когда вы изменили его, если вы переходите к файлу.Designer.cs, вы видите значение MaxLength равным 0.. без изменений... в чем проблема?? заранее спасибо
1 ответ
Конструктор форм выполняет некоторые внутренние хитрости, чтобы позволить вам изменить тип столбца (например, из DataGridViewTextBoxColumn
в DataGridViewButtonColumn
) во время разработки. В результате этого дизайнер полагается на ваш подкласс DataGridViewColumn
имея правильно реализованный Clone()
метод, то есть:
public override object Clone() {
MyDataGridViewColumn that = (MyDataGridViewColumn)base.Clone();
that.MaxLength = this.MaxLength;
return that;
}
Если вы не переопределите Clone()
Метод, дизайнер не будет вносить изменения, которые вы вносите в значения пользовательских свойств.