2012-05-30 2 views
2

Я создал пользовательский столбец для DataGridView, и причина в том, что я хочу добавить свойство (тип) в столбец. Щелкните правой кнопкой мыши DataGridView и выберите «Редактировать столбцы ...». Затем, когда я выбираю столбец, который является моим настраиваемым типом столбца, я могу редактировать свойство, но если после редактирования «ОК» после редактирования, а затем перейдите в «Редактировать столбцы ...» снова значение, которое я присвоил своей собственности ушел.Пользовательское свойство не сохраняется при изменении в окне свойств

Вот мой код:

public class CustomColumn : DataGridViewColumn 
{ 
    [DisplayName("Type")] 
    [Category("Custom Property")] 
    public String type { get; set; } 

    public CustomColumn() 
     : base(new DataGridViewTextBoxCell()) 
    { 
    } 
} 

И изображение окна свойств:

Image of the propert windows http://s8.postimage.org/fzrke75gl/Capture.png

Может кто-нибудь сказать мне, что я делаю неправильно, или то, что мне нужно добавить так что, когда я изменяю значение в окне свойств, это значение присваивается свойству?

+0

У меня аналогичная проблема, может anoyne помочь? https://stackoverflow.com/questions/45836304/c-sharp-adding-collection-of-custom-properties-from-the-property-grid-at-design – Licentia

ответ

7

Я думаю, вам нужно переопределить метод Clone() для того, чтобы работать:

public class CustomColumn : DataGridViewColumn { 

    public CustomColumn() 
    : base(new DataGridViewTextBoxCell()) { 
    } 

    [DisplayName("Type")] 
    [Category("Custom Property")] 
    public String type { get; set; } 

    public override object Clone() { 
    CustomColumn copy = base.Clone() as CustomColumn; 
    copy.type = type; 
    return copy; 
    } 
} 

См Custom properties on overridden DataViewColumn do not save

+0

Это сделал трюк, большое вам спасибо :) – Laleila

+1

Работает как шарм. Нахождение этого раньше спасло бы меня большую часть дня. – Daniel

Смежные вопросы