Ara*_*hdn 2 c# winforms progress-bar
对不起,我的英语不好
我正在尝试在C#中设计一个Win Form,它将在加载时从数据库中获取一些数据
我想使用进度条显示阅读数据进度
我试过这个代码(以及其他许多代码)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,问题是,Form将等待,直到数据读取进度完成,我只能看到一个完整的进度条和所有加载的数据.
我该怎么做才能解决这个问题?
谢谢
由于这是winforms,我建议使用BackgroundWorker.
基本示例:
bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork);
bgWorker.ProgressChanged += new DoWorkEventHandler(bgWorker_ProgressChanged);
bgWorker.RunWorkerAsync(//pass in object to process)
Run Code Online (Sandbox Code Playgroud)
然后开始:
private void bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
//Do all of your work here
bgWorker.ReportProgress(); //percent done calculation
}
Run Code Online (Sandbox Code Playgroud)
然后,Progress change事件将触发安全地更新UI:
private void bgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar.Value = e.ProgressPercentage;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11248 次 |
| 最近记录: |