0

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

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

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

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

占用如此多处理器能力的代码在后台会做什么?每次更改这些属性时是否会重新绘制整个网格?有没有办法让重绘只发生一次?

4

1 回答 1

0

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

Grid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
Grid.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.EnableResizing;
于 2018-09-05T18:36:06.217 回答