ProgressBar值没有增加

时间:2013-05-17 11:08:04

标签: c# winforms progress-bar windows-applications

我在login表单中添加了一个进度条。

点击sign in表单中的login按钮后,next表单会从数据库中获取一些值(表单加载),然后获取next表单后数据。

现在,在next表单打开之前,我想以login形式显示该进度条中数据提取的进度。所以我在next表单中添加了以下代码。

Login login = new Login();

//loop...................

_recordCount = _recordCount + 1;

// Increment ProgressBar 

ProgressBar progressBar = (ProgressBar) login.Controls["progressBarMainPageLoad"];
if (_recordCount*10 < 100)
{
    progressBar.Value = _recordCount*10;
}

login形式的进度条没有变化。这有什么问题?

2 个答案:

答案 0 :(得分:4)

您应该使用BackgroundWorker来完成任务。

使用ProgressChanged事件更改进度条值,使用DoWork从数据库中获取值。

不要忘记将WorkerReportsProgress属性设置为true。

答案 1 :(得分:0)

如果我正确理解您的代码,您尝试使用

引用Login表单的当前实例
Login login = new Login();

当你在'next'表格内时。但是这一行创建了一个新的Login表单实例,获得的进度条控件来自这个新实例。因此,您实际上是在显示器上未显示的表单上增加进度条。

要证明这会增加一个

login.Show() 

在调用增量之前。

要解决,您需要在此next表单中传递正确的登录表单实例并引用它