更改几个DataGridView HeaderText值是SLOW

时间:2017-02-02 22:15:48

标签: c# performance datagridview headertext

将数据网格视图绑定到数据源后,我需要将12列的列标题更改为用户友好的值,并将它们设为只读。

Grid.Columns["columnname"].HeaderText = "Column Name";
Grid.Columns["Client"].ReadOnly = true;

当网格包含大型数据集(10,000多条记录)时,刷新网格所需的时间会明显延迟。检索数据需要亚秒级时间。更改12列Headertext值并在其他几个上设置ReadOnly = True的功能大约需要3-4倍的时间,并且将1 CPU的CPU使用率提高到100%。
在小数据集上,重命名过程花费的时间可以忽略不计,因此它显然取决于数据集的大小。

所有列/行自动调整大小属性均已关闭。 DataGridView.SuspendLayout()函数可以节省10毫秒。 DoubleBuffering节省了10毫秒。

代码在后台做了多少处理器能力? 每次更改这些属性时,它是否重绘整个网格? 有没有办法让重绘只发生一次?

1 个答案:

答案 0 :(得分:0)

行/列 header 的自动调整具有单独的属性。将这些设置为“自动调整大小”也会减慢重绘的速度。

Grid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
Grid.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.EnableResizing;