在将数据网格视图绑定到数据源之后,我需要将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毫秒。
代码会在后台做什么,占用了如此多的处理器能力?每次更改这些属性时,它都会重新绘制整个网格吗?有没有办法只重画一次?
发布于 2018-09-06 02:36:06
行/列header自动调整大小有单独的属性。将这些设置为AutoSize也会减慢重绘速度。
Grid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
Grid.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.EnableResizing;https://stackoverflow.com/questions/42013326
复制相似问题