C#在设计时从属性网格添加自定义属性的集合

时间:2017-08-23 09:48:27

标签: c# winforms datagridview datagridviewcolumn custom-properties

我遇到的问题是无法将创建的列添加到该类型的集合中。

我有以下属性:

public ObservableCollection<BrowseLayoutColumns> _BrowseLayoutColumns = new ObservableCollection<BrowseLayoutColumns>();
    [Category("Design")]
    public ObservableCollection<BrowseLayoutColumns> BrowseLayoutColumns
    {
        get { return _BrowseLayoutColumns; }
        set { _BrowseLayoutColumns = value; }
    } 

BrowseLayoutColumns

[TypeConverter(typeof(BrowseLayoutColumns))]   
public class BrowseLayoutColumns : DataGridViewColumn
{
    #region Properties

    public string ColumnName { get; set; }
    public string BindingField { get; set; }
    #endregion

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

    public override object Clone()
    {
        var copy = base.Clone() as BrowseLayoutColumns;
        copy.ColumnName = ColumnName;
        copy.BindingField = BindingField;            
        return copy;
    }        
}

所以在设计时间:

enter image description here

按下确定按钮后

enter image description here

这就是发生的事情,这就是我想要发生的事情

问题在于编译器的作用是:

private void InitializeComponent()
    {
        this.browseLayoutColumns1 = new MyBaseFramework.MyTypeEditors.BrowseLayoutColumns();
        this.SuspendLayout();
        // 
        // browseLayoutColumns1
        // 
        this.browseLayoutColumns1.BindingField = "TEST";
        this.browseLayoutColumns1.ColumnName = "TEST";
        this.browseLayoutColumns1.Name = "browseLayoutColumns1";
        // 
        // BrowseCONTACTS_BASE
        // 
        this.ClientSize = new System.Drawing.Size(606, 447);
        this.Name = "BrowseCONTACTS_BASE";
        this.ResumeLayout(false);
    }

为什么不这样做呢?

BrowseLayoutColumns.Add(browseLayoutColumns1);
我错过了什么?任何帮助都会非常有益!提前谢谢

0 个答案:

没有答案