0

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

单击表单中的sign in 按钮后,表单从数据库中获取一些值(在表单加载中),然后在获取数据后表单打开。loginnextnext

现在,在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。它有什么问题?

4

2 回答 2

4

您应该为您的任务使用BackgroundWorker

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

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

于 2013-05-17T11:14:53.360 回答
0

如果我正确理解您的代码,您尝试使用以下方法引用登录表单的当前实例

Login login = new Login();

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

为了证明这增加了一个

login.Show() 

在调用增量之前。

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

于 2013-05-17T11:21:19.270 回答