如何更改datagridview的行颜色,其中单元格值是c#中的某个值

本文关键字:单元格 datagridview 何更改 颜色 | 更新日期: 2023-09-27 18:27:25

我正在使用win应用程序,使用c#进行编码
我有一个数据网格视图,它正在从微软sql server数据库加载数据。我的需要是我想在datagridview单元格值小于35的地方设置行颜色
我的想法如下。

//this is just my Idea,Not correct code,so please add code  
 private void colorchange()
    {
        if (dataGridView4.cellvaue <= 35)
        {
            dataGridView4.row_fore_colour = red;
        }
    }  

datagridview单元格值采用文本格式。所以请不要忘记将文本转换为整数值,然后给我一个问题的解决方案(我不知道datagridview单元格值的转换)

如何更改datagridview的行颜色,其中单元格值是c#中的某个值

void dataGridView4_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (this.dataGridView4.Rows[e.RowIndex].Cells["cellToCheck"].Value != null)
        {
            if ((int)this.dataGridView4.Rows[e.RowIndex].Cells["cellToCheck"].Value <=35)
            {
                this.dataGridView4.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
            }
        }
    }

我在我想要的代码项目中找到了这个。。

认为这可能是实现目标的方法:

    for (int i = 0; i < dataGridView4.Rows.Count; i++)
            {
                for (int o = 0; o < dataGridView4.Rows[i].Cells.Count;o++ )
                {  
                     int num1;
                     if(dataGridView4.Rows[i].Cells[o].Value != null)
                     {
                       string text1 = dataGridView4.Rows[i].Cells[o].Value.toString;
                       bool res = int.TryParse(text1, out num1);
                       if (res == true)
                        {
                          if(Convert.ToInt32(dataGridView4.Rows[i].Cells[o].Value) < 35)
                         {
                          dataGridView4.Rows[i].DefaultCellStyle.BackColor = System.Drawing.Color.Red; 
                         }
                        }
                      }
                }
            }

尝试这可能是工作

void dataGridView4_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
for (int i = 0; i < dataGridView4.Rows.Count; i++)
            {
        if (dataGridView4.Rows[i].Cells["cellname"].Value != null)
        {
            if ((int)dataGridView4.Rows[i].Cells["cellname"].Value <=35)
            {
                dataGridView4.Rows[i].DefaultCellStyle.BackColor = Color.Red;
            }
        }
    }
}

这将只检查一列"cellname",如果您想检查所有列,则添加一个额外的for循环。。

您可以在您的条件下使用单元格编号。我使用单元格编号解决了问题,然后使用if条件获取单元格值。您可以使用此代码。

void dataGridView4_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
for (int i = 0; i < dataGridView4.Rows.Count; i++)
    {
        if (e.ColumnIndex == 9)
        {
            if (dataGridView2.CurrentCell != null && dataGridView2.CurrentCell.Value != null && dataGridView2.CurrentCell.Value <=35)
            {
            dataGridView4.Rows[i].DefaultCellStyle.BackColor = Color.Red;
            }
        }
    }
}