Есть два DataGridView с одинаковыми количеством столбцов, ширины которых тоже соответствуют. Собственно, находятся они друг под другом. И во втором показываются итоги из первого. Как сделать, чтобы когда пользователь меняет ширину в одном из DataGridView, она изменилась бы и во вторым. Первое приходящее на ум использовать событие ColumnWidthChanged, но если в обработчике мы поменяем ширины столбцов другого DataGridView, то он тоже вызовет событие, и так до тех пор, пока не посыпятся исключения. Так как же сделать?
Ответ
Подписываем оба DataGridView на один и тот же обработчик события. В нём проверяем ширину столбцов: если они совпадают, то просто выходим из метода. В противном случае, делаем ширину столбца второго датагрида как у первого.
private void DataGridView_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
DataGridView first = (DataGridView)sender;
DataGridView second = first == dataGridView1 ? dataGridView2 : dataGridView1;
int index = e.Column.Index;
if (first.Columns[index].Width == second.Columns[index].Width)
return;
second.Columns[index].Width = first.Columns[index].Width;
}
Комментариев нет:
Отправить комментарий