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

DataGridView行背景颜色

我很幸运地使用了RowPostPaint事件。

这里有一个例子:

http://msmvps.com/blogs/deborahk/archive/2009/08/13/painting-on-the-datagridview.aspx

希望这能有所帮助。