我有一个 Datagridview 并想像这样更改行的颜色:在第一列中具有相同值的所有行都应该具有相同的颜色。
我这样做是为了实现这一目标:
private void AlternatingRows()
{
foreach (DataGridViewRow row in dataGridView_daten.Rows)
{
if (row.Index > 0)
{
if (row.Cells[0].Value.ToString().Substring(0, 5) == dataGridView_daten.Rows[row.Index - 1].Cells[0].Value.ToString().Substring(0, 5))
{
row.DefaultCellStyle.BackColor = dataGridView_daten.Rows[row.Index - 1].DefaultCellStyle.BackColor;
}
else if (dataGridView_daten.Rows[row.Index - 1].DefaultCellStyle.BackColor == Color.AliceBlue)
{
row.DefaultCellStyle.BackColor = Color.FromArgb(226, 241, 254);
}
else if (dataGridView_daten.Rows[row.Index - 1].DefaultCellStyle.BackColor == Color.FromArgb(226, 241, 254))
{
row.DefaultCellStyle.BackColor = Color.AliceBlue;
}
}
}
}
所以基本上如果第一个单元格的值与上面的行相同,颜色应该是相同的......我在将Data绑定到DataGridView之后调用了这个方法......我也尝试在CellFormatting
事件,但它没有工作。我的问题是行仍然具有相同的颜色。当我调试它时,它DefaultCellStyle.BackColor
是空的......为什么DefaultCellStyle.BackColor
返回Empty?
就像那个If
条款else if (dataGridView_daten.Rows[row.Index -1].DefaultCellStyle.BackColor == Color.FromArgb(226, 241, 254))
永远不会是真的......