【问题标题】:add datagridviewcolumn property designtime添加 datagridviewcolumn 属性设计时
【发布时间】:2011-04-11 13:59:13
【问题描述】:

我有这个问题,我创建了自己的 datagridviewcolumn,我希望添加一些您可以在设计时编辑中更改的属性... 这是我的代码:

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

其实没问题,打开栏目编辑器,看到Sea类下的这个属性是可以改的,但是改了之后,如果你去.Designer.cs文件,看到的是MaxLength值为0 ..没有变化... 有什么问题?? 提前致谢

【问题讨论】:

    标签: c# datagridview properties datagridviewcolumn


    【解决方案1】:

    表单设计器执行了一些内部技巧,以允许您在设计时更改列类型(例如,从 DataGridViewTextBoxColumnDataGridViewButtonColumn)。因此,设计器依赖于您的 DataGridViewColumn 子类具有正确实现的 Clone() 方法,即:

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

    如果您不重写 Clone() 方法,设计器将不会提交您对自定义属性值所做的任何更改。

    【讨论】:

    • 这是一个迟到 3 年的 +1。遇到完全相同的问题。这是一个简洁而正确的解决方案。
    • 感谢 Bradley,但由于某种原因,我无法在运行时访问该值 - 它总是空的,我还缺少一块拼图吗?
    • 我应该澄清一下,我可以从表单上的控件访问值,但我需要能够在控件内部访问该值以驱动其他功能。
    • @mattpm 我建议就这个主题提出一个新问题,并包括你的一些代码。您的问题的原因不是很明显。
    • 感谢 Bradley,我已经完成并发布了完整的代码(这只是 MS 的一个示例,我想添加一些设计时参数)。 stackoverflow.com/questions/17711964/…
    猜你喜欢
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多