2014-03-26 177 views
2

我剛剛學習如何在虛擬模式下使用DataGridView控件。我使用一個列表數組來存儲可能很小或很大的文本文件的內容。 DataGridView中的一個特定列需要根據該單元格中的文本內容更改單元格的背景顏色。所以,我有一個事件處理程序:以虛擬模式更改'DataGridView'的單元格背景顏色

private void datagridview_CellValueNeeded(
    object sender, DataGridViewCellValueEventArgs e) 

用於填充DataGridView的每一行。我的問題是,我不知道在哪裏插入代碼來設置背景色,因爲單元格是在每一行中創建的(現在處於虛擬模式)。

我試圖使用的事件處理程序CellValueNeeded到第一檢查特定列ID,然後將所述小區設置背景顏色如下:

datagridview[e.ColumnIndex, e.RowIndex].Style.SelectionBackColor = 
    component_color; 

其中component_color被預先確定。但是,這種方法並沒有改變顏色。我也嘗試處理其他事件,如CellEnterCellLeaveCellValueChanged,RowsAddedRowLeave。不過,我從調試中瞭解到,這些事件要麼在事件發生之前從未觸發過,要麼發生過火災。

那麼,是否可以通過處理CellValueNeeded事件來設置單元格在特定列中創建時的背景顏色?或者我應該通過處理不同的事件來實現這一點?

回答

4

您需要處理DataGridView.CellFormatting事件。例如:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
{ 
    if (e.ColumnIndex == 3 && e.Value == targetValue) 
     e.CellStyle.BackColor = Color.Red; 
    else 
     e.CellStyle.BackColor = SystemColors.Window; 
} 

乾杯

相關問題