0

我想扩展 DataGridViewRow 以拥有两个自定义属性。

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

如果有人给我看路线图,我将不胜感激。

4

1 回答 1

3

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

dg.RowTemplate = new DataGridViewRowEx();

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

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;
}
于 2013-06-26T10:25:56.913 回答