在C#中将DataGridView DataSource设置为DataTable的速度很慢

Mar*_*ark 3 c# datatable datagridview backgroundworker winforms

我有一个DataTable,完全填充,我想设置为DatagridView:

gdv.DataSource = dt;
Run Code Online (Sandbox Code Playgroud)

然而,这非常缓慢.DataTable的填充速度非常快,但上面这一行需要很长时间.有没有办法加快速度或在另一个线程中执行它?

在这一点之后没有互动.只是上面的简单陈述!

谢谢.

Hen*_*man 8

检查格式选项,尤其是Fill相关属性.调整所有行的列宽需要大量计算.


And*_*law 5

这是一个修复.问题是框​​架在新数据源中每行重新调整一次列的大小(为什么??).当然,每次都需要遍历所有行,从而产生O(n ^ 2)运算.很遗憾看起来你必须在设置数据源之前关闭自动调整大小,然后手动调用AutoResizeColumns方法.

grdChanges.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None
grdChanges.DataSource = schemaChangesSpreadsheet.Changes
grdChanges.AutoResizeColumns(DataGridViewAutoSizeColumnMode.AllCells)
Run Code Online (Sandbox Code Playgroud)

事实证明,Microsoft告诉您在文章"扩展Windows窗体DataGridView控件的最佳实践"中执行此操作,如果您有不同的UI设置具有相同的繁重计算问题,这可能会对您有所帮助.

http://msdn.microsoft.com/en-us/library/ha5xt0d9.aspx