将数据网格视图绑定到数据源后,我需要将 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 毫秒。
占用如此多处理器能力的代码在后台会做什么?每次更改这些属性时是否会重新绘制整个网格?有没有办法让重绘只发生一次?