更改几个DataGridView HeaderText值是SLOW

问题描述 投票:0回答:1

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

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

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

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

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

c# performance datagridview headertext
1个回答
0
投票

行/列标题自动调整有单独的属性。将这些设置为AutoSize也会减慢重绘速度。

Grid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
Grid.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.EnableResizing;
© www.soinside.com 2019 - 2024. All rights reserved.