我在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表单中的进度条没有变化。它有什么问题?
发布于 2013-05-17 19:21:19
如果我没理解错您的代码,您会尝试用引用登录表单的当前实例
Login login = new Login();当您在'next'表单中时。但是这一行创建了Login表单的一个新实例,并且从这个新实例中获得了进度条控件。因此,您实际上是在递增不在监视器上显示的窗体上的进度条。
为了证明这一点,添加了一个
login.Show() 在调用增量之前。
要解决这个问题,您需要在此next表单中传递登录表单的正确实例并引用它
发布于 2013-05-17 19:14:53
您应该为您的任务使用BackgroundWorker。
使用ProgressChanged事件更改进度条值,使用DoWork从数据库获取值。
不要忘记将WorkerReportsProgress属性设置为true。
https://stackoverflow.com/questions/16607511
复制相似问题