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