在将数据网格视图绑定到数据源之后,我需要将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毫秒。
代码在后台做了多少处理器能力呢?每次更改这些属性时,它是否重绘整个网格?有没有办法让重绘只发生一次?
行/列标题自动调整有单独的属性。将这些设置为AutoSize也会减慢重绘速度。
Grid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
Grid.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.EnableResizing;