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;
                }
            }
        }
    }

したがって、基本的に最初のセルの値が上の行と同じである場合、色は同じである必要があります...データをDataGridViewにバインドした後にこのメソッドを呼び出します...また、CellFormattingイベントですが、機能しませんでした。私の問題は、行がまだすべて同じ色であるということです。デバッグすると、DefaultCellStyle.BackColor空になります...なぜDefaultCellStyle.BackColorEmptyが返されるのですか?
そのように、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 に答える