【问题标题】:Revert cell style changes in a datagridview control?还原 datagridview 控件中的单元格样式更改?
【发布时间】:2014-08-21 18:59:45
【问题描述】:

我的程序显示一个绑定的数据网格视图。如果用户更改任何单元格中的值,程序将更改该单元格的背景颜色。这是代码:

 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 恢复为默认设置。有谁知道我如何做到这一点?

【问题讨论】:

    标签: c# winforms datagridview


    【解决方案1】:

    如果您执行以下代码,则不必跟踪每个更改的单元格:

            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 的问题。

    【讨论】:

    • 你说得对……不是最漂亮的,但它让我得到了我想要的。非常感谢!
    • 没问题凯文。不过,我注意到我的回答有一点问题,所以我更新了它以将样式设置为 null 以避免为该单元格永久设置​​ HasStyle 标志。
    【解决方案2】:

    我在 Row 级别而不是 Cell 级别更改 BackColor,但这是我将颜色更改恢复为所有行的默认设置的操作:

            foreach (DataGridViewRow R in dgv_TermTasks.Rows)
            {
                R.DefaultCellStyle.BackColor = dgv_TermTasks.DefaultCellStyle.BackColor;
            }
    

    dgv_TermTasks 是 DataGridView 本身。

    【讨论】:

      猜你喜欢
      • 2010-10-15
      • 2011-07-03
      • 2012-08-04
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多