Мы используем событие CellFormatting для окрашивания ячеек в различных сетках по всему нашему приложению.
У нас есть общий код, который обрабатывает экспорт в Excel (и печать), но делает это в черно-белом режиме. Теперь мы хотим изменить это и подобрать цвет из сеток.
Этот вопрос и ответпомог (и он работает) ... за исключением проблемы с большими сетками, выходящими за пределы одного экрана. Части сетки, которые еще не отображались на экране, (логически) никогда не запускают свой код CellFormatting, и поэтому их основной цвет никогда не устанавливается. В результате в Excel цветовое кодирование исчезаетна полпути вниз по странице.
Кажется, есть три решения:
1) Сообщите пользователю, что он должен прокрутить все части сетки перед выполнением экспорта в Excel.Ха! Несерьезное решение
2) Программно прокрутите все части сетки перед экспортом в Excel. Только немного менее ужасно, чем (1)
3) В нашем коде экспорта в Excel активируйте что-то вверху, что говорит DataGridView рисовать/форматировать всю его область, например.
MyDataGridView.FormatAllCells()
Есть что-то подобное???
Да, и есть четвертый вариант, но он потребует изменения огромного количества существующего кода:
4) Прекратите использовать событие CellFormatting, отформатируйте ячейки во время загрузки. Проблема в том, что нам придется переоснастить каждую сетку в нашем приложении, поскольку CellFormatting — это то, как мы это делали с прошлого года.