【发布时间】:2014-02-15 08:28:58
【问题描述】:
我有一个DataGridView 控件,有两种方法:Filter() 和 ResetFilter()
过滤网格时,我将DataGridView 行的背景颜色更改为蓝色。
在 ResetFilter 上,我将每一行的 BackColor 重置为白色。
以下是我目前所达到的代码:
dgvMain.Rows.Cast<DataGridViewRow>().ToList
.ForEach(f => f.DefaultCellStyle.BackColor = Color.White);
这大约需要 40 到 50 毫秒,并且
foreach (DataGridViewRow row in dgvMain.Rows)
{ row.DefaultCellStyle.BackColor = Color.White; }
这大约需要 30 到 40 毫秒,速度提高了 25%。
是否有更快的解决方案来更改所有行的背景色? dgvMain.RowsDefaultCellStyle.BackColor = Color.White 之类的东西不会迭代每一行?
【问题讨论】:
-
我非常怀疑
dgvMain.Rows.Cast<DataGridViewRow>().ToList .ForEach(f => f.DefaultCellStyle.BackColor = Color.White);比传统的 foreach 快 25%! -
测量这些时的行数是多少?
-
@SriramSakthivel 哎呀,我打错了代码的顺序 :) 抱歉,当然传统的 foreach 比投射到列表要快。更正了代码。谢谢。
-
@SriramSakthivel 我有大约 57,500 行
-
我怀疑在更改颜色时调用了 Paint。如果是这种情况,请查看 this 是否对您有帮助。暂时防止重绘控制。
标签: c# winforms datagridview