добавить время разработки свойства datagridviewcolumn

У меня есть эта проблема, я создал свой собственный столбец datagridview и хочу добавить некоторые свойства, которые вы можете изменить при редактировании во время разработки... вот мой код:

private int nMaxLength;
[Description("Fondoscala valore"), Category("Sea")]
public int MaxLength
{
    get { return nMaxLength; }
    set { nMaxLength = value; }
}

и на самом деле все в порядке, когда вы открываете редактор столбцов, вы видите это свойство в категории «Море» и можете его изменить, но когда вы изменили его, если вы перейдете к файлу .Designer.cs, вы увидите, что значение MaxLength равно 0 .. без изменений... в чем проблема?? заранее спасибо


person ghiboz    schedule 13.09.2010    source источник


Ответы (1)


Конструктор форм использует некоторые внутренние хитрости, чтобы позволить вам изменить тип столбца (например, с DataGridViewTextBoxColumn на DataGridViewButtonColumn) во время разработки. В результате этого дизайнер полагается на то, что ваш подкласс DataGridViewColumn имеет правильно реализованный метод Clone(), т.е.:

public override object Clone() {
    MyDataGridViewColumn that = (MyDataGridViewColumn)base.Clone();
    that.MaxLength = this.MaxLength;
    return that;
}

Если вы не переопределите метод Clone(), дизайнер не зафиксирует никаких изменений, внесенных вами в значения пользовательских свойств.

person Bradley Smith    schedule 16.09.2010
comment
Вот 3-летний опоздание +1. Столкнулся с точно такой же проблемой. Это было лаконичное и правильное решение. - person KChaloux; 13.03.2013
comment
Спасибо за это, Брэдли, однако по какой-то причине я не могу получить доступ к значению во время выполнения - оно всегда пусто, есть ли часть головоломки, которую мне все еще не хватает? - person mattpm; 17.07.2013
comment
Я должен уточнить, я могу получить доступ к значению из элемента управления в форме, но мне нужно иметь доступ к значению внутри элемента управления для управления другими функциями. - person mattpm; 17.07.2013
comment
@mattpm Я бы порекомендовал открыть новый вопрос по этой теме и включить часть вашего кода. Причина вашей проблемы не сразу очевидна. - person Bradley Smith; 17.07.2013
comment
Спасибо, Брэдли, я сделал и опубликовал полный код (это всего лишь образец из MS, к которому я хочу добавить некоторые параметры времени разработки). stackoverflow.com/questions/17711964/ - person mattpm; 18.07.2013