我一直在玩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);
}
}
}
调试告诉我一切都是合理的,无效的 - 引用 - 或 - 任何 - 异常...... 有什么提示吗?
答案 0 :(得分:1)
您应该在CellPainting
事件中执行着色,而不是CellFormatting
,用于格式化单元格的值
答案 1 :(得分:0)
我建议从网格的DataBindingComplete事件中调用你的方法。从BackgroundWorker调用可能为时尚早,DataGridView.Rows尚未初始化。
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
ApplyColoring();
}