我有一个图书馆项目,其中一个表单是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;
}
}
答案 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;
}
}