2012-09-18 29 views
0

我有一个TabControl,其中包含2个DataGridView在单独的选项卡上。这两个都是基于TabControl外部的第三个DGV上选定行的值填充的。着色单元格不工作,除非DGV可见

我想为蓝色的其中一个DGV的左侧列着色,如果包含该DGV的页面当前可见,则工作正常。如果当前不可见,则颜色不会更改。我使用更改单元格颜色的代码是

foreach (DataGridViewRow row in this.dgvInformation.Rows) 
{ 
    DataGridViewCellStyle blueStyle = new DataGridViewCellStyle(); 
    blueStyle.Font = new Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular); 
    blueStyle.BackColor = Color.LightBlue; 
    row.Cells["InfoType"].Style = blueStyle; 
} 

我已经通过代码加强和DGV是否可见或不可见它采用相同的路径,但是,当它是可见单元格颜色仅改变。

如果DGV目前没有显示,是否有一个原因让DGV无法更改其单元格颜色?

非常感谢

+0

我觉得我在前一阵子遇到了一些麻烦。移动到该选项卡时,您可能需要重新对单元格重新着色。将慢跑我的头脑,看看是否有更好的解决方案。这与染色后对细胞进行排序时相同,我相信它们会回到标准状态。 –

+0

谢谢。我没有注意到排序的东西,但是,这也会重置颜色! – CrazyHorse

+1

您可能必须使用事件处理程序在某些事件(例如变为可见或排序)后重新着色。我有一个正确的噩梦与我认为是一个简单的任务 –

回答

0

[道歉这里回答我的问题 - 信贷属于巴蒂尔CI只是不喜欢留下悬而未决的问题!]

解决方法是在细胞着色代码添加到DataGridView的VisibleChanged事件,以及如果允许排序的Sorted事件