我们使用CellFormatting事件在应用程序的各个网格中对单元格进行颜色编码。
我们有一些通用代码,可以处理导出到Excel(和打印),但它是以黑白方式进行的。现在我们想要改变这个,并从网格中选择颜色。
这个问题和答案有所帮助(而且它有效)... 除了一个问题,就是超过单个屏幕的较大网格存在问题。尚未显示在屏幕上的网格部分(逻辑上)永远不会触发其CellFormatting代码,因此它们的底层颜色永远不会被设置。结果,在Excel中,颜色编码只能在页面中间停止。
似乎有三种解决方案:
1)告诉用户在执行导出到Excel之前必须滚动到网格的所有部分。哈!不是一个严肃的解决方案
2)在将数据导出到Excel之前,以编程方式滚动到网格的所有部分。仅比(1)略好
3)在我们的导出到Excel代码中,在顶部触发某些东西,告诉DataGridView绘制/格式化其整个区域,例如:
MyDataGridView.FormatAllCells()
有没有类似这样的东西可以做到这一点???
哦,还有第四个选项,但这将涉及触及大量现有代码:
4)停止使用CellFormatting事件,在加载时格式化单元格。问题在于,我们必须重新调整应用程序中的每个网格,因为自年代以来,CellFormatting是我们所采用的方式。