c# datagridview CellFormatting 内容改变就更改字体颜色
想实现以下功能:
单元格的内容发生变化,字体颜色就变黄色;如果没有发生就是白色;
如果赋值,会自动变成黄色;但是如果再给单元格赋同样的值),该单元格还是黄色,而没有变化白色。这是什么原因呢?
部分代码如下:
单元格赋不同的值:
private void Button1_Click(object sender, EventArgs e)
{
cells = cells + 1;
dgv.Rows[1].Cells[0].Value = "1";
dgv.Rows[1].Cells[1].Value = cells.ToString();
dgv.Rows[1].Cells[2].Value = cells.ToString();
dgv.Rows[1].Cells[2].Value = cells.ToString();
}
单元格赋同样的值:
private void Button2_Click(object sender, EventArgs e)
{
dgv.Rows[1].Cells[0].Value = "1";
dgv.Rows[1].Cells[1].Value = cells.ToString();
dgv.Rows[1].Cells[2].Value = cells.ToString();
}
CellFormatting 事件:
if (CellValue[e.RowIndex, e.ColumnIndex] != e.Value.ToString() && CellValue[e.RowIndex, e.ColumnIndex] != "0")
{
e.CellStyle.ForeColor = Color.Yellow;
}
else
{
e.CellStyle.ForeColor = Color.White;
}
e.CellStyle.Font = new Font("微软雅黑", 10, FontStyle.Regular);
SolidBrush fontBrush = new SolidBrush(e.CellStyle.ForeColor);
CellValue[e.RowIndex, e.ColumnIndex] = e.Value.ToString();
int fontheight = (int)e.Graphics.MeasureString(e.Value.ToString(), e.CellStyle.Font).Height;
int fontwidth = (int)e.Graphics.MeasureString(e.Value.ToString(), e.CellStyle.Font).Width;
e.Graphics.DrawString((String)e.Value, e.CellStyle.Font, fontBrush, e.CellBounds.X + cellWidth, e.CellBounds.Y + (e.CellBounds.Height - fontheight) / 2);