更改几个DataGridView HeaderText值是缓慢的



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

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

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

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

在占用如此多处理器功率的背景下,代码可能在做什么?是不是每次更改这些属性时都会重新绘制整个网格?有没有办法让重画只发生一次?

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

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

最新更新