如果退货日期已过期,请将背景颜色设为红色?

时间:2014-03-21 17:00:35

标签: c# oracle11g

我有一个图书馆项目,其中一个表单是borrowed_book表单,我有一些控件来获取借书器信息,我还有两个日期文本框,一个borrowed_date和另一个对于return_date并以相同的形式,我有一个名为datagridview1的datagridview,它显示所有借来的图书信息,同时显示两个日期,我的问题是当返回日期到期时我想为后台创建那个单元格(datagridview cell)是红色的,我用这个代码安静但它不起作用

if (this.dataGridView1.Columns[e.ColumnIndex].DataPropertyName == "return_date")
{
    var returnDate = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells["return_date‌"].Value);
    var borrowDate = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells["borrow_date"].Value);
    if (returnDate > borrowDate)
    {
        e.CellStyle.BackColor = Color.Red;
        // e.CellStyle.ForeColor = Color.Red;
    }
}

2 个答案:

答案 0 :(得分:1)

您需要在DataGridView.CellFormatting事件的事件处理程序中格式化单元格的背景:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (this.dataGridView1.Columns[e.ColumnIndex].DataPropertyName == "return_date")
    {
        var returnDate = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells["return_date‌"].Value);
        var borrowDate = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells["borrow_date"].Value);
        if (returnDate > borrowDate)
        {
            e.CellStyle.BackColor = Color.Red;
        }
        else
        {
            e.CellStyle.BackColor = SystemColors.Window;
        }
    }
}

当然,您需要确保在Windows窗体设计器或代码中分配事件处理程序。

干杯

答案 1 :(得分:0)

试试这个

if (this.dataGridView1.Columns[e.ColumnIndex].DataPropertyName == "return_date")
{
    var returnDate = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells["return_date‌"].Value);
    var borrowDate = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells["borrow_date"].Value);
    if (returnDate > borrowDate)
    {


    DataGridViewCellStyle CellStyle = new DataGridViewCellStyle();
        CellStyle.BackColor = Color.Red;
        dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style = CellStyle;
    }
}