Czy istnieje sposób na wymuszenie, aby DataGridView uruchomił zdarzenie CellFormatting dla wszystkich komórek?

Używamy zdarzenia CellFormatting do kodowania komórek w różnych siatkach w całej naszej aplikacji.

Mamy ogólny kod, który obsługuje eksport do Excela (i drukowanie), ale robi to w czerni i bieli. Teraz chcemy to zmienić i wybrać kolor z siatek.

Topytanie odpowiedź pomógł (i działa) ... z wyjątkiem problemu z większymi siatkami, które wychodzą poza pojedynczy ekran. Fragmenty siatki, które nie zostały jeszcze wyświetlone na ekranie, nigdy (logicznie) nie otrzymują swojego kodu CellFormatting, więc ich podstawowy kolor nigdy nie zostanie ustawiony. W rezultacie w programie Excel kodowanie kolorówwygasa w połowie strony.

Wydaje się, że są trzy rozwiązania:

1) Powiedz użytkownikowi, że musi przewinąć do wszystkich części siatki przed wykonaniem eksportu do Excela.Ha! Nie poważne rozwiązanie

2) Programowo przewiń do wszystkich części siatki przed wykonaniem eksportu do programu Excel.Tylko nieznacznie mniej straszne niż (1)

3) W naszym kodzie Eksportuj do Excela wystrzel coś na górze, które każe DataGridView malować / formatować cały obszar, np.

  MyDataGridView.FormatAllCells()

Czy jest coś, co robi coś takiego?

Och, i jest czwarta opcja, ale będzie to wymagało dotknięcia ogromnej ilości istniejącego kodu:

4) Przestań używać zdarzenia CellFormatting, sformatuj komórki w czasie ładowania. Problem z tym polega na tym, że musielibyśmy przeorganizować każdą siatkę w naszej aplikacji, ponieważ CellFormatting to sposób, w jaki zrobiliśmy to od roku.

questionAnswers(5)

yourAnswerToTheQuestion