我有这个问题,我创建了自己的datagridviewcolumn,我希望添加一些可以在设计时编辑中更改的属性... 这是我的代码:
private int nMaxLength;
[Description("Fondoscala valore"), Category("Sea")]
public int MaxLength
{
get { return nMaxLength; }
set { nMaxLength = value; }
}
并且实际上没问题,当你打开列编辑器时,你会在Sea类别下看到这个属性,你可以改变,但是当你改变它时,如果你去.Designer.cs文件,你会看到MaxLength值为0 ..没有变化...... 有什么问题?? 提前谢谢
答案 0 :(得分:8)
Forms Designer会执行一些内部技巧,以便您在设计时更改列类型(例如从DataGridViewTextBoxColumn
更改为DataGridViewButtonColumn
)。因此,设计人员依赖于您的子类DataGridViewColumn
具有正确实现的Clone()
方法,即:
public override object Clone() {
MyDataGridViewColumn that = (MyDataGridViewColumn)base.Clone();
that.MaxLength = this.MaxLength;
return that;
}
如果您不覆盖Clone()
方法,则设计人员不会提交您对自定义属性值所做的任何更改。