Есть ли способ заставить DataGridView запускать событие CellFormatting для всех ячеек?

Мы используем событие CellFormatting для окрашивания ячеек в различных сетках по всему нашему приложению.

У нас есть общий код, который обрабатывает экспорт в Excel (и печать), но делает это в черно-белом режиме. Теперь мы хотим изменить это и подобрать цвет из сеток.

Этот вопрос и ответпомог (и он работает) ... за исключением проблемы с большими сетками, выходящими за пределы одного экрана. Части сетки, которые еще не отображались на экране, (логически) никогда не запускают свой код CellFormatting, и поэтому их основной цвет никогда не устанавливается. В результате в Excel цветовое кодирование исчезаетна полпути вниз по странице.

Кажется, есть три решения:

1) Сообщите пользователю, что он должен прокрутить все части сетки перед выполнением экспорта в Excel.Ха! Несерьезное решение

2) Программно прокрутите все части сетки перед экспортом в Excel. Только немного менее ужасно, чем (1)

3) В нашем коде экспорта в Excel активируйте что-то вверху, что говорит DataGridView рисовать/форматировать всю его область, например.

  MyDataGridView.FormatAllCells()

Есть что-то подобное???

Да, и есть четвертый вариант, но он потребует изменения огромного количества существующего кода:

4) Прекратите использовать событие CellFormatting, отформатируйте ячейки во время загрузки. Проблема в том, что нам придется переоснастить каждую сетку в нашем приложении, поскольку CellFormatting — это то, как мы это делали с прошлого года.

12
задан Community 23 May 2017 в 12:18
поделиться