c#更改DataGridView的行背景色

本文关键字:背景色 DataGridView 更改 | 更新日期: 2023-09-27 18:12:00

我有一个来自数据库的表,它保存了一些关于用户的信息,当用户Cell[5]的值是"Connected"时,我想改变该行的背景色:

下面是我的函数:
        public void Initialize(DataGridView Dt)
        {
            foreach(DataGridViewRow Row in Dt.Rows)
            {
                if (Row.Cells[5].Value.ToString() == "Connected")
                {
                    Row.DefaultCellStyle.BackColor = Color.Green;
                }
                else
                {
                    Row.DefaultCellStyle.BackColor = Color.Red;
                }
            }
        }

一切工作完美,没有异常抛出,但我的行颜色没有改变在两种情况下

请注意,我使用MetroGridViewMetro Dll

c#更改DataGridView的行背景色

您必须处理单元格格式化事件以实现您的目标。尝试下面的示例代码。

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
              if(dataGridView1.Columns[e.ColumnIndex].Name == "C")
              {
                  if(e.Value != null)
                  {
                      String StringValue =(String)e.Value;
                      if (StringValue.IndexOf("C1") > -1)
                      {
                          dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
                      }
                  }
              }
        }

我猜,即使你做的是正确的,单元格格式化事件触发在后面的部分,是覆盖您的更改。