自定义datagridview单元格?

时间:2015-12-16 09:05:25

标签: c# inheritance datagridview interface

我正在做一个项目,我需要在DataGridView单元格中添加一个字段(让它称为字段)。关键是要在DataGriidView单元格中增加一个字段,这将使项目的其余部分变得更加容易。

我创建了以下内容:

public class CustomGridRow:DataGridRow{}
public class CustomGridColumn:DataGridViewColumn
{
 public CustomGridColumn 
  {
   This.TemplateCell = new CustomGridTextBoxCell()
  }
}
public class CustomGridTextBoxCell: DataGridViewTextBoxCell
{
 public string field;
}

问题: 如果我创建一个类(这是我想要实现的):

 public class CustomGridCell: DataGridViewCell{}

将字段移至CustomGridCell,我希望CustomGridTextBoxCell继承新CustomGridCell,但它已经有DataGridViewCell的基类和C#不允许类继承两个基类。

我的理解是解决方案来自Interfaces?知道怎么解决吗?

1 个答案:

答案 0 :(得分:0)

假设我明白你想做什么,我想你可以这样做:

class CustomGridTextBoxCell : CustomGridCell
{
    public CustomGridTextBoxCell(string field) 
        : base(field)
    {
    }
}

abstract class CustomGridCell : DataGridViewCell
{
    private string _field;

    public CustomGridCell(string field)
    {
        this._field = field;
    }

    public string field
    {
        get { return this._field; }
    }
}

注意:我没有对此进行过测试,它只是十分之一。

更新:如果您将抽象类更改为类似的内容,那么:

abstract class CustomGridCell : DataGridViewCell
{
    public string field { get; set; };

    public CustomGridCell(string field)
    {
        this.field = field;
    }
}

<强> 更新

您也可以尝试:

class CustomDataGridColumn : DataGridViewColumn
{
     this.CellTemplate = new CustomGridTextBoxCell();
}

class CustomGridTextBoxCell : CustomGridCell
{

}

class CustomGridCell : DataGridViewCell
{
    public string fieldA { get; set; }

    public CustomGridCell()
    {

    }
}