Windows窗体:DataGridView排序后出现backgroundcolor问题

时间:2011-06-08 12:18:54

标签: c# .net winforms datagridview

我有一个 Windows Forms datagridview ,其中行有不同的背景颜色

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

2 个答案:

答案 0 :(得分:8)

根据2005年6月提交给Microsoft的bug report,这是Visual Studio 2005的设计:

  

感谢您提供错误报告。该   你注意到的行为是设计的。   对数据绑定网格进行排序会导致所有问题   要重新创建的行(称为   ListChangedType.Reset)。这导致   你的格式丢失了。你需要   使用DataBindingComplete事件   申请样式和检查   ListChangedType.Reset知道何时发生   应用你的造型。或者你   可以使用CellFormatting事件。   理想情况下,您的所有格式都可以   从那以后在CellFormatting中完成   它是动态应用的。

答案 1 :(得分:3)

使用Sorted事件,您可以恢复数据网格视图的背景颜色。

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);            
}