如何在 dataGridView C# 中设置行颜色? [复制]

Posted

技术标签:

【中文标题】如何在 dataGridView C# 中设置行颜色? [复制]【英文标题】:how to set rows color in dataGridView C#? [duplicate] 【发布时间】:2017-05-06 14:23:00 【问题描述】:

如果状态 =“未完成”,则行颜色应为红色。我怎样才能做到这一点? 状态字段在第 8 列中。DataGridView

String query = "select * from bug order by id desc;";
String Status = null;                     
DataTable dt = connection.retrieve(query);
for (int i = 0; i < dataGridViewDashboard.Rows.Count; i++)

    Status = dataGridViewDashboard.Rows[i].Cells[8].Value.ToString();
    if (Status == "Incomplete")
    
        dataGridViewDashboard.Rows[i].DefaultCellStyle.BackColor = Color.Red;
    
    else
    
        dataGridViewDashboard.Rows[i].DefaultCellStyle.BackColor = Color.Green;
    

【问题讨论】:

这个问题被问太多次了。你可以使用CellFormatting event MSDN 非常感谢 Pikoh。 非常感谢萨阿迪。 【参考方案1】:

你必须控制是否是新行。

    String query = "select * from bug order by id desc;";
    String Status = null;                     
    DataTable dt = connection.retrieve(query);
    for (int i = 0; i < dataGridViewDashboard.Rows.Count; i++)
    
       if (dataGridViewDashboard.Rows[i].IsNewRow)
                continue;
        Status = dataGridViewDashboard.Rows[i].Cells[8].Value.ToString();
        if (Status == "Incomplete")
        
            dataGridViewDashboard.Rows[i].DefaultCellStyle.BackColor = Color.Red;
        
        else
        
            dataGridViewDashboard.Rows[i].DefaultCellStyle.BackColor = Color.Green;
        
    

【讨论】:

非常感谢大家【参考方案2】:

您必须订阅 DataGridView 的 PrePaint 事件,您可以轻松地设置行的颜色。

  private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
if (your control here) 

    dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;

【讨论】:

以上是关于如何在 dataGridView C# 中设置行颜色? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

(C#)datagridview中设置某列为下拉框

c# 如何改变datagridview里的字体颜色

是否可以在 AStyle 中设置行限制

Pyside:在 QVBoxLayout 小部件中设置行的背景

根据另一行的值是不是已被索引,在 pandas 中设置行索引

c#怎么把datagridview给填满