没有什么好搜索,所以这里提出问题。
我有一个带有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
答案 0 :(得分:0)
我使用RowPostPaint事件很幸运。
这里有一个例子:
http://msmvps.com/blogs/deborahk/archive/2009/08/13/painting-on-the-datagridview.aspx
希望这有帮助。