【发布时间】:2013-06-18 09:00:23
【问题描述】:
我正在尝试在 C# 中设计一个 WinForms 控件,该控件将在加载时从数据库中获取一些数据。
我想用进度条来显示进度。
我尝试了这段代码(以及许多其他代码):
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.Show();
progressBar1.Value = 10;
int n;
n = 50;//number of records in DB ,
double progress = 0;
double progstep = 25 / n;
for (int i = 1; i <= n; i++)
{
//getting
if (progress <= 100)
progressBar1.Value = (int)progress;
}
progressBar1.Value = 35;
n = 100;//number of records in DB for another data reading from DB ,
progress = 35;
progstep = 65 / n;
for (int i = 1; i <= n; i++)
{
//getting data from DB
dataGridView1.Rows.Add(....);
//Adding that data to a datagrid -- parametrs removed.
progress += progress;
if (progress <= 100)
progressBar1.Value = (int)progress;
}
}
但是,问题是表单会等到数据读取进度完成,我只能看到一个完整的进度条和所有数据加载。
我应该怎么做才能解决这个问题?
【问题讨论】:
-
使用线程来实现后台进程。
-
尝试使用backroundWorker。
-
@bash.d,由于我将在表单上使用数据网格,我不知道如何使用后台工作程序或线程来完成此操作..
-
您可以将工作方法传递给线程或后台工作人员,从而确定线程中发生的情况。使用this 作为开始。
标签: c# winforms progress-bar