CellFormattingイベントを使用して、アプリケーション全体のさまざまなグリッドのセルを色分けします。
Excelへのエクスポート(および印刷)を処理する一般的なコードがいくつかありますが、それは白黒で行われます。これを変更して、グリッドから色を取得します。
この質問と回答は役に立ちました(そしてそれは機能します)...単一の画面を超えて広がるより大きなグリッドに問題があることを除いて。画面にまだ表示されていないグリッドの部分は、(論理的に)CellFormattingコードが実行されることはないため、基になる色が設定されることはありません。その結果、Excelでは、色分けがページの途中で消えてしまいます。
3つの解決策があるようです:
1)Excelにエクスポートする前に、グリッドのすべての部分にスクロールする必要があることをユーザーに伝えます。ハ!深刻な解決策ではありません
2)Excelにエクスポートする前に、プログラムでグリッドのすべての部分にスクロールします。(1)よりもわずかに恐ろしいだけです
3)Excelコードへのエクスポートで、上部に何かを起動して、DataGridViewにその領域全体をペイント/フォーマットするように指示します。
MyDataGridView.FormatAllCells()
このようなことをする何かがありますか?
ああ、4番目のオプションがありますが、これには大量の既存のコードに触れることが含まれます。
4)CellFormattingイベントの使用を停止し、ロード時にセルをフォーマットします。これに関する問題は、CellFormattingがyear dot以来行ってきた方法であるため、アプリケーション内のすべてのグリッドを再ツール化する必要があることです。