0

我有一个 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)) 永远不会是真的......

4

1 回答 1

0

我解决了这个问题color,当数字改变时会改变:

    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;
            }
        }
    }
于 2012-07-18T05:37:37.507 回答