如何使用 C# 根据字符串值更改 datagridview 上的单元格颜色

问题描述 投票:0回答:1

我有一个由本地数据库填充的数据网格视图。该 datagridview 有一些列有两种类型的值:“OK”和“NO”。 我想将具有“OK”值的单元格标记为绿色,将具有“NO”值的单元格标记为红色。

目前我正在尝试只使用一列并编写代码,但它不起作用

这是我的代码:

 private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
 {
     if (this.dataGridView1.Columns[e.ColumnIndex].HeaderText.Equals("over05"))
     {
         if (e.Value != null)
         {
             if (((string)e.Value).Trim() == "OK")
                 e.CellStyle.BackColor = Color.Green;

             if (((string)e.Value).Trim() == "NO")
                 e.CellStyle.BackColor = Color.Red;
         }
     }
 }

不幸的是,我没有在该列上获得任何具有该值的颜色

谢谢你

c# winforms datagridview
1个回答
0
投票

您宁愿使用 RowPrepaint 事件:

private void DataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
 {
     if (this.dataGridView1.Columns[e.ColumnIndex].HeaderText.Equals("over05"))
     {
         dgvLignes.Rows[e.RowIndex].DefaultCellStyle.BackColor = e.Value?.ToString().Trim() switch
         {
             "OK" => Color.Green,
             "NO" => Color.Red,
             _ => Color.Grey
         }
     }
 }
© www.soinside.com 2019 - 2024. All rights reserved.