我有一个 Datagridview 绑定(bind)到一个数据表,该数据表保存来自数据库的数据
我做了一个函数来检查日期是否在正确的时间范围内
如果它正确没有任何反应。
否则它必须将行/单元格的颜色更改为红色
我尝试了很多方法,但没有任何效果
这是我创建的方法:
private void CheckFactTermijn()
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
DateTime FactuurDatum = Convert.ToDateTime(dataGridView1.Rows[i].Cells[2].Value.ToString());
int termijn = Convert.ToInt32(dataGridView1.Rows[i].Cells[7].Value.ToString());
DateTime finalDate = FactuurDatum.AddDays((double)termijn);<p></p>
if (finalDate > DateTime.Now)
{
}
else
{
dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
}
}
最佳答案
我认为解决方案在于设置颜色的时间,而不是设置颜色的方法。已经建议了几种不同的事件,有些确实会起作用。使用 cellformatting、databindingcomplete 甚至 paint 事件的问题之一是它们会被多次触发。根据我收集到的信息,datagridview 控件存在一个问题,即在显示表单之前,您无法更改任何单元格的颜色。因此,在调用 Shown() 之前运行的方法或触发的事件不会改变颜色。定位为问题解决方案的事件通常有效,但由于它们被多次调用,可能不是最有效的答案。
解决该问题的最简单方法可能是将用于填充/着色网格的代码放在表单的 Shown() 方法中,而不是构造函数中。下面是指向 msdn 论坛中的帖子的链接,该帖子向我提供了解决方案,它在页面下方大约 3/4 处被标记为答案。
关于c# - Datagridview 单元格颜色更改不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3205115/