ProgressBar值没有增加

本文关键字:增加 ProgressBar | 更新日期: 2023-09-27 18:14:18

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

点击login表单中的sign in按钮后,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表单的进度条没有变化。有什么问题吗?

ProgressBar值没有增加

你应该为你的任务使用BackgroundWorker。

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

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

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

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

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

为了证明这一点,添加一个

login.Show() 

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