【发布时间】:2014-07-23 17:54:22
【问题描述】:
我按下一个按钮(位于主窗体,MDI 父窗体上),它触发了 BackgroundWorker 的 RunWorkerAsync 方法(位于同一个 MDI 父窗体上)。在这种方法中,我设置了我的 DataGridView 的 DataSource,它位于我的主 Mdi 窗口拥有的一个子窗口内。这是 RunWorkerAsync 的代码:
Action d = () => {
((DataGridView) data_viewer.gridviewer).SuspendLayout();
((DataGridView) data_viewer.gridviewer).DataSource = datatable_copied;
((DataGridView) data_viewer.gridviewer).ResumeLayout();
};
base.Invoke( d );
上面的代码填充网格OK。所有数据都传递到网格中。问题是我将使用非常大的表,并且在加载数据时整个应用程序都会挂起,包括 Mdi 父窗口。我不介意挂起 DGV,但主 MDI 父窗口和包含 DGV 的子窗口在整个加载太多时挂起。我该如何解决这个问题?我希望能够在加载(或可能绘制)整个数据表时毫无问题地移动包含 DGV 的子窗口。我认为使用后台工作人员可以解决问题,但显然不能。
【问题讨论】:
-
您的数据表包含多少行?
-
刚刚做了另一个测试。目前悬挂的那根现在有 800 行,但它们非常密集(长串)。硬件不是 pb。
标签: c# .net datagridview datatable ado.net