Страницы

Поиск по вопросам

среда, 12 декабря 2018 г.

два DataGridView. При изменении пользователем ширины столбца в одном, изменить в другом

Есть два 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; }

Комментариев нет:

Отправить комментарий