У меня есть DataGridView, который я добавил в форму с именем dgv.Я пытаюсь заполнить этот объект объектом пользовательского типа, который наследуется от DataGridView, MyDataGridView: DataGridView.Я вошел в окно наблюдения и убедился, что в dgv есть столбцы и строки, которые существуют после того, как я установил dgv = myDgv, хотя он не заполняет представление данных в форме какими-либо столбцами или строками.Когда я вместо этого добавляю тестовый столбец в dgv, он действительно отображается в форме.Причина, по которой я строю это таким образом, заключается в том, что MyDataGridView имеет возможность подсветки ячеек на основе их значения настраиваемым способом.Пока единственный работающий процесс - это добавить каждый столбец по имени заголовка и тексту заголовка и добавить каждую ячейку по его cell.value.Если бы я сделал это, я бы потерял все форматирование в myDgv.
Мои вопросы: я просто пропускаю какое-то свойство видимости, так как я создал экземпляр DataGridView по умолчанию и заполнил столбцы / строки в myDgv вместо того, чтобы позволятьVisualStudio создает DataGridView и создает его для меня в формируемом редакторе.
Первый пример: не заполняет DataGridView
public partial class ReportForm: Form
{
public ReportForm()
{
InitializeComponent();
dgv=mydgv;
}
}
Второй пример: также происходит сбой с исключением ![enter image description here](https://i.stack.imgur.com/FVhiN.png)
Static class MainClass
{
public static void CloneFrom(this DataGridView dgv_target, DataGridView dgv_2copy)
{
try
{
if (dgv_target.Columns.Count == 0)
{
foreach (DataGridViewColumn dgvc in dgv_2copy.Columns)
{
dgv_target.Columns.Add(dgvc.Clone() as DataGridViewColumn);
}
}
DataGridViewRow row = new DataGridViewRow();
for (int i = 0; i < dgv_target.Rows.Count; i++)
{
row = (DataGridViewRow)dgv_target.Rows[i].Clone();
int intColIndex = 0;
foreach (DataGridViewCell cell in dgv_target.Rows[i].Cells)
{
row.Cells[intColIndex].Value = cell.Value;
intColIndex++;
}
dgv_target.Rows.Add(row);
}
dgv_target.AllowUserToAddRows = false;
dgv_target.Refresh();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
public partial class ReportForm: Form
{
public ReportForm()
{
InitializeComponent();
dgv.CloneFrom(mydgv);
}
}