2012-11-29 73 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; 
    }    
}