0

我有一个DatagridviewC# 桌面应用程序。当任何单元格为空时,为了突出显示它,我将该特定单元格的背景更改为Color.Green

                if (checkString(Convert.ToString(this.UserDataTable.Rows[i].Cells[kk].Value).Trim()) == false)
                {
                    this.UserDataTable.Rows[i].Cells[kk].Style.BackColor = Color.Green;
                    this.MandatoryField_Label.ForeColor = Color.Green;
                    success = false;
                }

当用户在单元格中输入数据时,我会还原更改。任何想法如何做到这一点。

我正在考虑的解决方案之一是检查每个单元格的颜色,然后更改它。我敢肯定,有更好的方法来做到这一点。

这不起作用:

 this.UserDataTable.DefaultCellStyle.BackColor = Color.White;

谢谢

4

2 回答 2

0

您可以在 CellLeave 事件中检查单元格的内容

if(!string.IsNullOrEmpty(((DataGridViewCell)sender).Value))
    ((DataGridViewCell)sender).Style.BackColor = Color.White;
于 2012-11-29T06:58:40.500 回答
0

处理这个问题的最干净的方法可能是像这样使用 CellFormatting 事件(这是您需要的唯一代码,您可以删除其他代码):

dataGridView1.CellFormatting += new DataGridViewCellFormattingEventHandler(dataGridView1_CellFormatting);

void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.Value == null || String.IsNullOrWhiteSpace(e.Value.ToString()))
    {
        e.CellStyle.BackColor = Color.Green;
    }
    else
    {
        e.CellStyle.BackColor = Color.White;
    }            
}
于 2012-11-29T16:08:01.757 回答