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.BackColor
Emptyが返されるのですか?
そのように、If
条項else if (dataGridView_daten.Rows[row.Index -1].DefaultCellStyle.BackColor == Color.FromArgb(226, 241, 254))
は決して真実ではありません...