Gibt es eine Möglichkeit, ein DataGridView zu zwingen, sein CellFormatting-Ereignis für alle Zellen auszulösen?

Wir verwenden das CellFormatting-Ereignis, um Zellen in verschiedenen Rastern in unserer gesamten Anwendung einzufärben.

Wir haben einen generischen Code, der den Export nach Excel (und das Drucken) handhabt, aber in Schwarzweiß. Jetzt wollen wir das ändern und die Farbe aus den Gittern nehmen.

DieseFrage Antwort hat geholfen (und es funktioniert) ... außer es gibt ein Problem mit größeren Gittern, die über einen einzelnen Bildschirm hinausgehen. Die Teile des Rasters, die noch nicht auf dem Bildschirm angezeigt wurden, werden (logischerweise) nie mit ihrem CellFormatting-Code ausgelöst, sodass ihre zugrunde liegende Farbe niemals festgelegt wird. Als Ergebnis wird in Excel die Farbcodierungsprudelt aus auf halbem Weg die Seite runter.

Es scheint drei Lösungen zu geben:

1) Sagen Sie dem Benutzer, dass er zu allen Teilen des Rasters scrollen muss, bevor Sie einen Export nach Excel ausführen.Ha! Keine ernsthafte Lösung

2) Scrollen Sie programmgesteuert zu allen Teilen des Rasters, bevor Sie einen Export nach Excel ausführen.Nur etwas weniger schrecklich als (1)

3) Feuern Sie in unserem Export nach Excel-Code oben etwas ab, das DataGridView anweist, den gesamten Bereich zu malen / formatieren, z.

  MyDataGridView.FormatAllCells()

Gibt es etwas, das so etwas macht ???

Oh, und es gibt noch eine vierte Option, bei der jedoch eine große Menge an vorhandenem Code berührt wird:

4) Verwenden Sie das CellFormatting-Ereignis nicht mehr, sondern formatieren Sie die Zellen zum Zeitpunkt des Ladens. Das Problem dabei ist, dass wir jedes Raster in unserer Anwendung umrüsten müssen, da CellFormatting so ist, wie wir es seit einem Jahr gemacht haben.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage