2012-11-29 101 views
0

我在C#桌面应用程序中有Datagridview。当任一小区的是空的,为了突出它,我改变该特定细胞的背景以Color.GreenDatagridview Cell Style问题

   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; 

感谢

回答

0

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

if(!string.IsNullOrEmpty(((DataGridViewCell)sender).Value)) 
    ((DataGridViewCell)sender).Style.BackColor = Color.White; 
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; 
    }    
}