c# - Datagridview 单元格颜色更改不起作用

标签 c# datagridview

我有一个 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 处被标记为答案。

MSDN forums post with the Solution

关于c# - Datagridview 单元格颜色更改不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3205115/

相关文章:

c# - 保证并行线程/任务/任何东西的立即启动

c# - 如何更改.NET应用程序的预定义userconfig目录?

c# - 如果 SQL DB 列为 NULL 插入到 datagridview 0

vb.net - 如何在 GridView 中为网格单元格着色?

vb.net - 无法设置列 'name' 。该值违反了该列的 MaxLength 限制

c# - 获取异常 Newtonsoft.Json.JsonReaderException

c# - 通过反射获取基类的私有(private)属性/方法

c# - 带有网络服务的 MVVM

DataGridViewCellStyle 显示以千为单位的数值数据

c# - 自定义DataGridViewRow问题