我的程序显示绑定的datagridview。如果用户更改任何单元格中的值,程序将更改该单元格的背景颜色。这是代码:
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.PaleGoldenrod;
}
我的程序有一个'撤消'基本上执行dataTable.RejectChange();
的按钮。当用户激活“撤消”按钮时,datagridview中更改的所有内容都将恢复为原始值。但是,单元格背景颜色仍然像用户更改了单元格中的值。
很简单,我想知道是否有一种方法可以用来将单元格样式(主要是背景颜色)恢复到原始状态(交替灰色和白)?
我正在考虑使用以下语句捕获原始默认设置:
defaultCellStyle = this.dataGridView1.DefaultCellStyle;
而且,当执行撤消时,我可以执行以下操作:
this.dataGridView1.DefaultCellStyle = this.defaultCellStyle;
然而,这似乎不起作用,因为gridview仍然保留了单元格中的着色,就好像它们已被更改一样。
我不想跟踪每个已更改的单元格,只是为了遍历它们并将背景颜色更改为默认值。我希望有一种方法可以获取整个datagridview并将其恢复为默认设置。有谁知道我怎么能做到这一点?
答案 0 :(得分:4)
如果您执行了类似下面代码的操作,则无需跟踪每个已更改的单元格:
dt.RejectChanges();
for (int x = 0; x < Grid.RowCount; x++)
{
for (int y = 0; y < Grid.ColumnCount; y++)
{
if (Grid.Rows[x].Cells[y].HasStyle)
{
Grid.Rows[x].Cells[y].Style = null;
}
}
}
这不是最漂亮的,但如果没有CellValueChanged
针对RejectChanges
来电,可能就是这样。当然,这假设您的默认单元格样式始终是您要重置为的样式。
编辑:纠正了问题,一旦某个单元格的值发生了变化,HasStyle
始终为true
。
答案 1 :(得分:0)
我正在更改行级别的BackColor而不是 Cell 级别,但这是我将颜色更改还原为所有行的默认设置的操作:
foreach (DataGridViewRow R in dgv_TermTasks.Rows)
{
R.DefaultCellStyle.BackColor = dgv_TermTasks.DefaultCellStyle.BackColor;
}
dgv_TermTasks是DataGridView本身。