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