[英]How to add a column to datagridview usercontrol c# winform
I want to design a new datagridview as usercontrol. 我想设计一个新的datagridview作为用户控件。 It will have a public and browsable property that indicates whether this datagridview has a counter column or not.
它将具有一个公共的和可浏览的属性,该属性指示此datagridview是否具有计数器列。 If it is true then add a new DataGridViewColumn named 'Counter' at 0 index of rows.
如果为true,则在0行索引处添加一个名为“ Counter”的新DataGridViewColumn。
This is my usercontrol code: 这是我的用户控制代码:
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; }
}
}
It couldn't change the value of _HasCounterColumn at design time. 在设计时无法更改_HasCounterColumn的值。
It cannot work because the designer creates the object (calls the constructor) before it sets the HasCounterColumn
property. 它无法工作,因为设计人员在设置
HasCounterColumn
属性之前先创建了对象(调用构造函数)。
Try this instead : 试试这个代替:
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");
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.