Расширить 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;
}