C# 使用列表的慢速DataGridView绘图<&燃气轮机;作为C中的数据源#
我一直在阅读有关数据网格视图绘制速度慢的问题,但我找不到解决方案,因此我将尝试分享我的代码的清晰示例和时间度量(超过6秒…) 我在i7 CPU、16Gb RAM、2Gb GPU上使用双缓冲区和VirtualMode,绘图时间相同。我有一个列表(大约10.000个简单结构元素),我将其用作DataGridView的数据源,代码如下:C# 使用列表的慢速DataGridView绘图<&燃气轮机;作为C中的数据源#,c#,list,performance,datagridview,datasource,C#,List,Performance,Datagridview,Datasource,我一直在阅读有关数据网格视图绘制速度慢的问题,但我找不到解决方案,因此我将尝试分享我的代码的清晰示例和时间度量(超过6秒…) 我在i7 CPU、16Gb RAM、2Gb GPU上使用双缓冲区和VirtualMode,绘图时间相同。我有一个列表(大约10.000个简单结构元素),我将其用作DataGridView的数据源,代码如下: this.Cursor = Cursors.WaitCursor; this.dataGridViewList = this.completeList.FindAl
this.Cursor = Cursors.WaitCursor;
this.dataGridViewList = this.completeList.FindAll (
r => r.code >= 0
);
this.myDataGridView.AutoGenerateColumns = false;
this.myDataGridView.DataSource = this.dataGridViewList;
this.myDataGridView.ClearSelection();
this.Cursor = Cursors.Default;
这是时间,它真的很慢,列表不是问题,它可以在毫秒内排序,我确信问题是DataGridView重新填充或绘图
我在DataGridView或表单上使用DoubleBuffer?还有dgv.Suspend/ResumeLayout。您可能还想关闭任何列宽自动功能,直到数据全部存在!您的图像显示的时间跨度为
对不起,我是西班牙人,这里的重点是“.”是您的逗号“,”作为千位分隔符:我猜您在错误的地方寻找性能的“滞后”。在我的测试中,使用一个简单的列表
,始终使用一百万个元素,加载到网格中的时间不到0.4秒。将一百万条记录“加载”到列表中大约需要1.5秒。这是“无”双缓冲或虚拟模式。10000个元素并不是很多记录,默认的DataGridView
应该可以立即处理那么多记录。关键是,除非你在运行发布的代码之后“做些什么”,否则我会看看你是如何获取数据的。我建议在“将数据加载到列表
”周围放置一块秒表
,在设置网格的代码周围放置另一块秒表
。这应该告诉你这个滞后是从哪里来的。我确信它不是来自this.myDataGridView.DataSource=this.datagridview列表代码>。