C# Backcolor在C中的DataGridView中给了我错误的颜色#
我有一个Datagridview,希望更改行的颜色,如下所示:第一列中具有相同值的所有行都应该具有相同的颜色。C# Backcolor在C中的DataGridView中给了我错误的颜色#,c#,datagridview,C#,Datagridview,我有一个Datagridview,希望更改行的颜色,如下所示:第一列中具有相同值的所有行都应该具有相同的颜色。 我这样做是为了实现这一点: private void AlternatingRows() { foreach (DataGridViewRow row in dataGridView_daten.Rows) { if (row.Index > 0) {
我这样做是为了实现这一点:
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;
}
}
}
}
因此,基本上,如果第一个单元格的值与上一行相同,则颜色应相同。。。我将数据绑定到DataGridView后调用此方法。。。我还试图在CellFormatting
事件中调用它,但没有成功。
我的问题是,这些行仍然具有相同的颜色。调试时,DefaultCellStyle.BackColor
为空。。。为什么DefaultCellStyle.BackColor
返回空值?类似于
If
子句elseif(dataGridView\u daten.Rows[row.Index-1].DefaultCellStyle.BackColor==Color.FromArgb(226241254))
永远不会是真的 我用一种颜色解决了这个问题,颜色会随着数字的变化而变化:
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))
{
if (Farbe == Color.FromArgb(226, 241, 254))
Farbe = Color.AliceBlue;
else
Farbe = Color.FromArgb(226, 241, 254);
}
row.DefaultCellStyle.BackColor = Farbe;
}
}
}