【发布时间】:2018-01-29 12:04:48
【问题描述】:
我有一个要填充数据的 DataGridView,DataGridView 中的数据是动态生成的,没有可用作绑定的数据,我使用循环并在每次迭代时填充 DataGridView 的每一行。
private void Historique()
{
int k = 0;
for(int i= this.start_his; i <= this.end_his; i++)
{
DGV.Rows.Add();
DGV.Rows[k].Cells[0].Value = "semaine " + i;
DGV.Rows[k].Cells[1].Value = TOOLS.GetMaxHebdo(this.annee_his,
i);
k++;
}
}
功能
TOOLS.GetMaxHebdo(this.annee_his, i);
需要一些时间来响应,所以我想在不阻塞程序的情况下填充 DataGridView 的每一行并查看一行一行的显示,有没有办法使用线程或其他方法来做到这一点?
【问题讨论】:
-
你是说你想让网格填充直到“end_his”的所有行......但是每一行都会有一个空白的 Cells[1].value 直到数据返回 GetMaxHebdo?!
-
@Wheels73 感谢您的回答,是的,我希望在数据准备好时显示该行
-
这就是我的想法。但是如果你只想在数据准备好时显示行,为什么还需要另一个线程呢?
-
因为 start_his 和 end_his 之间的间隔可以更大,当间隔很大时,DGV 可能需要 2 分钟以上才能显示,否则 Visual Studio 停止执行,所以我想要一个在处理完成之前逐行显示的方式,避免长时间等待和(阻塞)程序显示DGV
-
有....只是不是第一个答案方式。我会看一下控件或后台工作类的调用方法。这是让进程在后台运行的理想选择,该进程会引发和事件到主线程,从而允许您更新网格。看看这里stackoverflow.com/questions/29475673/…
标签: c# multithreading datagridview