更改DataGridview行中的颜色C#

时间:2014-01-28 09:11:35

标签: c# .net datagridview

我现在有很多其他人提出同样的问题并得到答案。但在我的情况下,我似乎无法让这个工作。我已阅读了几篇建议在每一行使用DefaultCellStyle的帖子。我做了同样的事情,但我的颜色没有改变。

这是我的代码:

private void MyHistoryMainControl_Load(object sender, EventArgs e)
{
    editedShipmentGrid.DataSource = handler.GetEditedShipments();
    foreach (DataGridViewRow row in editedShipmentGrid.Rows)
    {
        if (string.IsNullOrWhiteSpace(row.Cells[54].FormattedValue.ToString()))
        {
            row.DefaultCellStyle.ForeColor = Color.Blue;
        }

        if (string.IsNullOrWhiteSpace(row.Cells[55].FormattedValue.ToString()))
        {
            row.DefaultCellStyle.ForeColor = Color.Red;
        }
    }
}

我在我正在使用的UserControl的Load方法中运行此代码。 DataGridView中的数据加载正常,但颜色不会改变。我还检查了我的条件的bool值,它应该改变颜色。我在这做错了什么?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我必须在InitializeComponent()之后立即绑定数据;方法。在我的Load方法中,我根据单元格值更改颜色..

这是解决方案:

public MyHistoryMainControl()
{
    InitializeComponent();
    editedShipmentGrid.DataSource = handler.GetEditedShipments();
}

private void MyHistoryMainControl_Load(object sender, EventArgs e)
{
    foreach (DataGridViewRow row in editedShipmentGrid.Rows)
    {
        if (string.IsNullOrWhiteSpace(row.Cells[54].FormattedValue.ToString()))
        {
            row.DefaultCellStyle.ForeColor = Color.Blue;
        }

        if (string.IsNullOrWhiteSpace(row.Cells[55].FormattedValue.ToString()))
        {
            row.DefaultCellStyle.ForeColor = Color.Red;
        }
    }
}