如何在c#win中创建DataGridViewTextBoxColumn的自定义属性。形成

时间:2015-02-14 08:22:08

标签: c# datagridview datagridviewcolumn custom-properties

如何在 DataGridViewTextBoxColumn 中创建名为 IsCheck 的属性(值为true / false)?

我搜索了互联网,但无法找到创建财产的解决方案。请帮我一个代码片段。

2 个答案:

答案 0 :(得分:2)

除了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;
    }
}

答案 1 :(得分:1)

好吧,你可以通常的方式创建它:

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,您的操作几乎相同..