【发布时间】:2015-02-14 08:22:08
【问题描述】:
如何在 DataGridViewTextBoxColumn 中创建一个名为 IsCheck(值 true/false)的属性?
我搜索了互联网,但找不到创建财产的解决方案。请帮我写一个代码 sn-p 左右。
【问题讨论】:
标签: c# datagridview datagridviewcolumn custom-properties
如何在 DataGridViewTextBoxColumn 中创建一个名为 IsCheck(值 true/false)的属性?
我搜索了互联网,但找不到创建财产的解决方案。请帮我写一个代码 sn-p 左右。
【问题讨论】:
标签: c# datagridview datagridviewcolumn custom-properties
除了 TaW 的回复,我建议你重写 Clone() 函数以避免Designer 的麻烦。
class myCheckedColumn : DataGridViewTextBoxColumn
{
public bool IsChecked { get; set; }
public myCheckedColumn () { IsChecked = false; }
public myCheckedColumn (bool checked_) { IsChecked = checked_; }
public override object Clone()
{
myCheckedColumn clone = (myCheckedColumn)base.Clone();
myCheckedColumn.IsChecked = IsChecked;
return clone;
}
}
【讨论】:
好吧,你可以用通常的方式创建它:
class myCheckedColumn : DataGridViewTextBoxColumn
{
public bool IsChecked { get; set; }
public myCheckedColumn () { IsChecked = false; }
public myCheckedColumn (bool checked_) { IsChecked = checked_; }
}
现在将其添加到DataGridView DGV 的Columns 集合中:
myCheckedColumn checkColumn = new myCheckedColumn (true);
checkColumn.Name = "checkColumn";
checkColumn.HeaderText = "some Title";
checkColumn.MinimumWidth = 120;
DGV.Columns.Insert(someindex, checkColumn);
最后我们可以测试一下:
private void DGV_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
int col = e.ColumnIndex;
myCheckedColumn column = DGV.Columns[col] as myCheckedColumn ;
if (column != null)
{
Console.WriteLine(column.IsChecked.ToString());
column.IsChecked = !column.IsChecked;
}
}
注意:这是Column,正如您所要求的,而不是Cell!因此,该列的每个插入实例都有一个值。要创建自定义 DataGridViewTextBoxCell,您几乎可以这样做。
【讨论】: