Добавить свойство 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() Метод, дизайнер не будет вносить изменения, которые вы вносите в значения пользовательских свойств.

Другие вопросы по тегам