【问题标题】:How to add a column to datagridview usercontrol c# winform如何在datagridview usercontrol c# winform中添加一列
【发布时间】:2016-05-31 22:41:11
【问题描述】:

我想设计一个新的datagridview 作为用户控件。它将具有一个公共且可浏览的属性,指示此 datagridview 是否具有计数器列。如果为真,则在 0 行索引处添加一个名为“Counter”的新 DataGridViewColumn。

这是我的用户控制代码:

public partial class UniLibDataGridView : DataGridView
{
    public UniLibDataGridView()
    {
        InitializeComponent();
        if (_HasCounterColumn)
        {
            this.Columns.Add("Counter", "Counter");
        }
    }
    private bool _HasCounterColumn;
    [Browsable(true)]
    [Description("Indicates has Counter Column.")]
    [Category("UniLib Tools")]
    [DisplayName("Has Counter Column")]
    public bool HasCounterColumn
    {
        get { return _HasCounterColumn; }
        set { _HasCounterColumn = value; }
    }

}

它无法在设计时更改 _HasCounterColumn 的值。

【问题讨论】:

    标签: c# winforms datagridview user-controls datagridviewcolumn


    【解决方案1】:

    它无法工作,因为设计者在设置HasCounterColumn 属性之前创建了对象(调用构造函数)。

    试试这个:

    public class UniLibDataGridView : DataGridView
    {
        public UniLibDataGridView()
        {
        }
    
        [Browsable(true)]
        [Description("Indicates has Counter Column.")]
        [Category("UniLib Tools")]
        [DisplayName("Has Counter Column")]
        [DefaultValue(false)]
        public bool HasCounterColumn
        {
            get { return Columns.Contains("Counter"); }
            set
            {
                if (value)
                    Columns.Add("Counter", "Counter");
                else if (Columns.Contains("Counter"))
                    Columns.Remove("Counter");
            }
        }
    }
    

    【讨论】:

    • 在表单上放置一个UniLibDataGridView 并将其Has Counter Column 属性设置为true 并构建解决方案。它将重置为 false,如果您将其设置为 true,它将添加另一个 Counter 列。解决方案需要一些修正。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多