【发布时间】:2018-05-25 12:47:12
【问题描述】:
在我的 DGV 中,单击一个单元格后,我想用某个值更改同一列的所有单元格的背景颜色。单击另一个单元格后,前一个单元格(及其所有列)必须恢复默认样式
int currCell = dgvLogHeader.CurrentCell.ColumnIndex;
string pattern = dgvLogHeader.CurrentCell.Value.ToString();
dgvLogHeader.AlternatingRowsDefaultCellStyle.BackColor = SystemColors.ScrollBar;
dgvLogHeader.DefaultCellStyle.BackColor = SystemColors.Info;
for (int j=0; j < dgvLogHeader.Rows.Count; j++ ) {
//dgvLogHeader.Columns[currCell].
if (dgvLogHeader.Rows[j].Cells[currCell].Value.ToString() == pattern) {
dgvLogHeader.Rows[j].Cells[currCell].Style.BackColor = Color.Brown;
}
}
但是之后单元格改变了背景并且默认样式丢失了。
【问题讨论】:
-
确保重置不再应该被标记的单元格。为此,请将颜色设置为 Color.Empty!
-
我必须记住所有重绘的单元格吗?为什么不工作 dgvLogHeader.AlternatingRowsDefaultCellStyle.BackColor = SystemColors.ScrollBar; dgvLogHeader.DefaultCellStyle.BackColor = SystemColors.Info;
-
它不会覆盖单独设置单元格的颜色。这些将始终显示其各自的颜色,直到您将其重置为 Color.Empty。
-
有没有一种快速的方法来进行颜色重置和绘制新单元格?不是通过周期,在一个周期中它很慢,在我看来
-
查看我的回答:理想情况下,它只使用两次调用,一次重置最后一列,一次为当前列着色..
标签: c# datagridview styles