DataGridView根据每行的列中的值更改行标题颜色

问题描述:

我在编写用于管理并发机器的软件。 DataGridView显示机器的状态,如果激活或不激活,我想将每台机器的行标题打上红色或绿色。DataGridView根据每行的列中的值更改行标题颜色

我搜索了网络并尝试了多种解决方案,但其中没有一个可以工作,头文件仍然是灰色的,所以我要求您的帮助。

DGVMachinesStatus.DataSource = db.GetAllFrom("machines"); 
DGVMachinesStatus.EnableHeadersVisualStyles = false; 

foreach (DataGridViewRow r in DGVMachinesStatus.Rows) 
{ 
    if (r.Cells["status"].ToString().Equals(DBNull.Value.ToString())) 
    { 
     DataGridViewCellStyle rowStyle; 
     rowStyle = r.HeaderCell.Style; 
     rowStyle.BackColor = Color.Red; 
     r.HeaderCell.Style = rowStyle; 
    } 
    else 
    { 
     DataGridViewCellStyle rowStyle; 
     rowStyle = r.HeaderCell.Style; 
     rowStyle.BackColor = Color.Green; 
     r.HeaderCell.Style = rowStyle; 
    } 
} 
+1

您的代码工作没有任何问题。你有没有运行时错误? –

+0

你尝试过'EnableHeaderVisualStyles = False'吗?有时候是因为你的代码中没有默认属性。只是检查它:) – Muj

+0

@Muj请检查上面的代码。它已经包含'EnableHeaderVisualStyles = False'。 –

该问题是由调用窗体构造函数中的代码造成的,我避免了在窗体打开时使用激活事件着色DGV的问题。我不知道这是否是最好的原因,但它工作