Existe uma maneira de forçar um DataGridView para disparar seu evento CellFormatting para todas as células?

Usamos o evento CellFormatting para colorir células de códigos em várias grades em todo o nosso aplicativo.

Temos um código genérico que manipula a exportação para o Excel (e imprime), mas o faz em preto e branco. Agora queremos mudar isso e pegar a cor das grades.

esteResposta da questão ajudou (e funciona) ... exceto que há um problema com grades maiores que se estendem além de uma única tela. As partes da grade que ainda não foram exibidas na tela estão (logicamente) nunca recebendo o código de formatação de célula, e assim sua cor subjacente nunca é definida. Como resultado, no Excel, o código de coresfracassa na metade da página.

Parece que existem três soluções:

1) Diga ao usuário que ele precisa rolar para todas as partes da grade antes de fazer uma exportação para o Excel.Ha! Não é uma solução séria

2) Programaticamente role para todas as partes da grade antes de fazer uma exportação para o Excel.Apenas ligeiramente menos horrível que (1)

3) Em nosso código Exportar para o Excel, acesse algo no topo que informa ao DataGridView para pintar / formatar toda a área, por exemplo.

  MyDataGridView.FormatAllCells()

Existe algo que faz algo assim ???

Ah, e há uma quarta opção, mas isso envolve tocar uma quantidade enorme de código existente:

4) Pare de usar o evento CellFormatting, formate as células no tempo de carregamento. Problema com isso é que teríamos que reequipar cada grade em nosso aplicativo, já que o CellFormatting é o modo como fizemos desde o ano.

questionAnswers(5)

yourAnswerToTheQuestion