在C#中扩展DataGridViewRow

时间:2013-06-26 09:45:34

标签: c# custom-controls extend datagridviewrow

我想将DataGridViewRow扩展为具有两个自定义属性。

我知道我必须从DataGridViewRow继承并添加我的自定义属性。

如果有人向我展示路线图,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

首先从DataGridViewRow继承(假设DataGridViewRowEx为类名),然后在有DataGridView实例后将属性RowTemplate分配给DataGridViewRowEx的新实例:

dg.RowTemplate = new DataGridViewRowEx();

之后应该没问题,添加到Rows集合的所有行都与继承的行相同(DataGridViewRow的Clone()方法创建与RowTemplate相同类型的新行,见下文)。 / p>

public override object Clone()
{
    DataGridViewRow row;
    Type type = base.GetType();
    if (type == rowType)
    {
        row = new DataGridViewRow();
    }
    else
    {
        row = (DataGridViewRow) Activator.CreateInstance(type);
    }
    if (row != null)
    {
        base.CloneInternal(row);
        if (this.HasErrorText)
        {
            row.ErrorText = this.ErrorTextInternal;
        }
        if (base.HasHeaderCell)
        {
            row.HeaderCell = (DataGridViewRowHeaderCell) this.HeaderCell.Clone();
        }
        row.CloneCells(this);
    }
    return row;
}