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

Elm*_*mex 4 .net c# datagridview winforms

我有一个Windows窗体数据网格视图,其中行具有不同的背景颜色.

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

Jay*_*ggs 9

根据2005年6月提交给Microsoft的这个错误报告,这是针对Visual Studio 2005的设计:

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


小智 6

使用 Sorted 事件,您可以恢复 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);            
}
Run Code Online (Sandbox Code Playgroud)