我现在有很多其他人提出同样的问题并得到答案。但在我的情况下,我似乎无法让这个工作。我已阅读了几篇建议在每一行使用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值,它应该改变颜色。我在这做错了什么?
答案 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;
}
}
}