0

没有什么好搜索的,所以问题来了。

我有一个带有通过 SQL 查询填充的 datagridview 的表单。有一个日期列(存储为“delay_in_hours”,我用它来确定更改行的背景颜色的内容。

问题是在表单的初始加载时没有设置 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 的背景色,但是当我遍历 foreach 时,所有项/值都保持不变,但是当 foreach 完成时,即使监视项从未更改值,行也具有背景色。

关于导致这种情况的任何想法,或者我如何调试 backColor 以便确定为什么在加载时最初没有在表单上设置颜色?

SK

4

1 回答 1

0

使用 RowPostPaint 事件我很幸运。

这里有一个例子:

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

希望这可以帮助。

于 2013-08-07T00:49:24.320 回答