我在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
形式的进度条没有变化。这有什么问题?
答案 0 :(得分:4)
您应该使用BackgroundWorker来完成任务。
使用ProgressChanged
事件更改进度条值,使用DoWork
从数据库中获取值。
不要忘记将WorkerReportsProgress
属性设置为true。
答案 1 :(得分:0)
如果我正确理解您的代码,您尝试使用
引用Login表单的当前实例Login login = new Login();
当你在'next'
表格内时。但是这一行创建了一个新的Login表单实例,获得的进度条控件来自这个新实例。因此,您实际上是在显示器上未显示的表单上增加进度条。
要证明这会增加一个
login.Show()
在调用增量之前。
要解决,您需要在此next
表单中传递正确的登录表单实例并引用它