DataGridView中单元格的背景

时间:2010-01-08 12:35:57

标签: c# datagridview colors cell

我一直在玩datagridviews,并且出现了一个问题。 - >不会更改CellFormatting事件中的单元格背景。 我试过这个:

private void dataGridView1_CellFormatting(object sender, dataGridViewCellFormattingEventArgs e)
{
    if (dataGridView1.Columns[e.ColumnIndex].Name.Equals(dnsList.First<String>()))
    {
        DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
        DataGridViewCell cell = row.Cells[e.ColumnIndex];
        cell.Style.BackColor = Color.FromArgb(194, 235, 211);
    }
}

哪个完美,但是这个:

private void ApplyColoring()
{
    if (dataGridView1.DataSource != null)
    {
        foreach (DataGridViewRow dataGridRow in dataGridView1.Rows)
        {
            DataGridViewCell cell = dataGridRow.Cells[dnsList.First<String>()];
            cell.Style.BackColor = Color.FromArgb(194, 235, 211);
        }
    }
}

调试告诉我一切都是合理的,无效的 - 引用 - 或 - 任何 - 异常...... 有什么提示吗?

2 个答案:

答案 0 :(得分:1)

您应该在CellPainting事件中执行着色,而不是CellFormatting,用于格式化单元格的值

答案 1 :(得分:0)

我建议从网格的DataBindingComplete事件中调用你的方法。从BackgroundWorker调用可能为时尚早,DataGridView.Rows尚未初始化。


private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
      ApplyColoring();
}