2011-06-08 77 views
3

我有一个Windows窗体datagridview,其中行有不同背景颜色Windows窗体:DataGridView排序后的背景颜色问题

问题是,排序(单击行标题)后,背景颜色消失,并且所有行都再次为白色(默认颜色)。可能是这个问题的原因是什么?

+0

是否正在处理Sorted事件? – hawbsl 2011-06-08 12:39:52

+0

您正在使用哪个版本的Visual Studio? – 2011-06-08 17:40:40

回答

6

根据这一bug report提交给微软在2005年6月这是由设计为Visual Studio 2005:

谢谢您的错误报告。您注意到的 行为是由设计决定的。 排序数据绑定网格会导致重新创建所有 行(称为 ListChangedType.Reset)。这会导致 格式丢失。您需要 才能使用DataBindingComplete事件 来应用样式并检查 ListChangedType.Reset以了解何时应用样式的 。或者,您可以使用CellFormatting事件 。 理想情况下,您可以在CellFormatting中完成所有的格式设置 ,因为它是动态应用的 。

2

使用排序事件,你可以恢复datagridview的背景颜色。

private void datagridview_Sorted(object sender, EventArgs e) 
{ 
    //you can restore backcolor of datagridview in this function. 
    //example given below 
    foreach (DataGridViewRow r in datagridview.Rows) 
     r.DefaultCellStyle.BackColor = Color.FromArgb(220, 0, 0);    
} 
+0

我正在处理这个问题,但在排序前保留编辑的颜色,然后在此排序的事件中重新应用。一点额外的工作,我们不应该真的要做,但我们走了。 – n00dles 2017-06-30 05:43:00