【问题标题】:Dynamically cell color change in DataGridViewDataGridView 中的动态单元格颜色变化
【发布时间】:2019-03-10 06:20:25
【问题描述】:

我正在开发一个数据库应用程序。其中一些列是文本列,一列是日期。我想将列的日期与系统日期进行比较,并希望在列的日期值小于系统日期时将单元格背景颜色变为红色。下面给出了我尝试过但不起作用的代码。

private void EMIDGVAdm_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (this.EMIDGVAdm.Columns[e.ColumnIndex].DataPropertyName == "Date_1")
        {
            var EMIDate = Convert.ToDateTime(EMIDGVAdm.Rows[e.RowIndex].Cells["Date_1"].Value);
            if (EMIDate <= DateTime.Now)
            {
                e.CellStyle.BackColor = Color.Red;
                //e.CellStyle.ForeColor = Color.Red;
            }
        }
    }

【问题讨论】:

  • 你调试代码了吗?调试器是否进入 if 条件?
  • 是的,如果进去了。
  • 先生,我尝试了另外 1 个第一个是 private void EMIDGVAdm_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { for (int i = 0; i System.DateTime.Now.Date) { EMIDGVAdm.Rows[i].Cells[5].Style.BackColor = System.Drawing.红色; } }
  • 好吧。你现在用的是哪一个?以及它是否在条件范围内。我觉得 e.CellStyle.BackColor 应该可以工作
  • 先生,我使用的是随问题正文提供的。

标签: c# ms-access data-binding datagridview


【解决方案1】:

如果不需要时间部分,请使用Todaytry catch 处理日期字段中可能的空值。必须在 var EMIDate 行中使用 gridview 列集合名称,这可能与 DataPropertyName 不同。因此,对于您工作过程中的网格视图,它们可能是相同的。

分析了 OP 的项目。似乎代码不会从视图中读取列,因此必须加宽 DataGridView 和面板以显示 Date_1 列而不滚动。此外,DataPropertyName 没有下划线。调整后的设计和代码工作:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (this.dataGridView1.Columns[e.ColumnIndex].DataPropertyName == "Date 1")
        try
        {
            var EMIDate = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells["date1DataGridViewTextBoxColumn"].Value);
            if (EMIDate <= DateTime.Today)
            {
                e.CellStyle.BackColor = Color.Red;
            }
        }
        catch
        {
        }
}

发现一个似乎命名错误的文本框。为了与其他控件的命名保持一致,可能 textBox6 应该是 txtEMI6。

【讨论】:

  • if (Convert.ToDateTime(row.Cells[5].Value)
  • 我的记录都没有 null 所以我没有收到错误。还没有弄清楚如何处理空异常。在 VBA 中如此简单。
  • 添加了try catch 来处理空字段。
  • 另外,回到你的代码。毕竟我的版本不起作用。
  • 先生,您是否尝试过使用访问数据库的上述代码,如果是,请附加到我,因为我仍然没有得到响应。你可以给我发邮件或给我一些下载链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 2019-08-04
  • 2016-05-27
  • 1970-01-01
相关资源
最近更新 更多