DataGridView行背景颜色
本文关键字:颜色 背景 DataGridView | 更新日期: 2023-09-27 18:26:37
没有什么好的搜索,所以问题来了。
我有一个通过SQL查询填充的带有数据网格视图的表单。有一个日期列(存储为"delay_in_hours"),我用它来确定更改行的BackColor的内容。
问题是,只有在触发加载表单的同一事件(loadSql)时,backColor才会在表单的初始加载时设置(就像我有一个按钮,上面写着更新/刷新表单)。
以下是片段:
public void loadSql(
try
{
...
foreach (DataGridViewRow r in sqlDataGridView.Rows)
{
if (delay_in_hours >= Program._delay_warn3)
{
r.DefaultCellStyle.BackColor = Color.Red;
}
else if (delay_in_hours >= Program._delay_warn2)
{
r.DefaultCellStyle.BackColor = Color.Orange;
}
else if (delay_in_hours >= Program._delay_warn)
{
r.DefaultCellStyle.BackColor = Color.Yellow;
}
}
sqlDataGridView.Refresh();
sqlDataGridView.Update();
}
catch (Exception ex)
{
MessageBox.Show("loadsql Exception:" + ex.Message + " STACK: " + ex.StackTrace.ToString());
}
我没能为背景色做一块"手表"。我将一个手表项目设置为CellStyle的BackColor,但当我在foreach中迭代时,所有项目/值都保持不变,但当foreach完成时,即使手表项目从未更改值,行也具有BackColor。
关于是什么导致了这种情况,或者我如何调试backColor,以便确定为什么在加载表单时最初没有在表单上设置颜色,有什么想法吗?
SK
我很幸运地使用了RowPostPaint事件。
这里有一个例子:
http://msmvps.com/blogs/deborahk/archive/2009/08/13/painting-on-the-datagridview.aspx
希望这能有所帮助。