我有一个 Windows Forms datagridview ,其中行有不同的背景颜色。
问题是,背景颜色在排序(单击行标题)后消失,所有行再次变为白色(默认颜色)。这个问题可能是什么原因?
答案 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);
}