DataGridView根据foreach行

时间:2016-11-09 09:19:53

标签: c# .net winforms 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 :(得分:-1)

问题是由于在表单构造函数中调用代码引起的,我避免了在打开表单时使用激活事件对DGV进行着色的问题。我不知道这是最好的原因,但它有效吗