Страницы

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

воскресенье, 29 декабря 2019 г.

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

#c_sharp #net #winforms


Есть два DataGridView с одинаковыми количеством столбцов, ширины которых тоже соответствуют.
Собственно, находятся они друг под другом. И во втором показываются итоги из первого.
Как сделать, чтобы когда пользователь меняет ширину в одном из DataGridView, она изменилась
бы и во вторым. Первое приходящее на ум использовать событие ColumnWidthChanged, но
если в обработчике мы поменяем ширины столбцов другого DataGridView, то он тоже вызовет
событие, и так до тех пор, пока не посыпятся исключения. Так как же сделать?
    


Ответы

Ответ 1



Подписываем оба 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; }

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

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