DataGridView Row BackColor

时间:2013-08-06 23:54:01

标签: c# datagridview

没有什么好搜索,所以这里提出问题。

我有一个带有datagridview的表单,该表单通过SQL查询填充。有一个日期列(存储为'delay_in_hours',用于确定更改行的BackColor的内容。

问题是backColor没有在表单的初始加载时设置,只有在加载表单的同一事件(loadSql)被触发时(就像我说的更新/刷新表单的按钮)。

以下是摘录:

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以便确定为什么在加载时最初在窗体上没有设置颜色?

SK

1 个答案:

答案 0 :(得分:0)

我使用RowPostPaint事件很幸运。

这里有一个例子:

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

希望这有帮助。