Расширить DataGridViewRow в C#

Я хочу расширить DataGridViewRow, чтобы иметь два пользовательских свойства.

Я знаю, что должен унаследовать от DataGridViewRow и добавить свои пользовательские свойства.

Я буду признателен, если кто-нибудь покажет мне дорожную карту.

1 ответ

Решение

Сначала наследуйте от DataGridViewRow (примите DataGridViewRowEx в качестве имени класса), затем, после того как у вас есть экземпляр DataGridView, назначьте свойство RowTemplate новому экземпляру DataGridViewRowEx:

dg.RowTemplate = new DataGridViewRowEx();

После этого все должно быть в порядке, все строки, добавленные в коллекцию Rows, будут иметь тот же тип, что и унаследованный (метод Clone() для DataGridViewRow создает новые строки того же типа, что и 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;
}
Другие вопросы по тегам