【问题标题】:ProgressBar value is not increasingProgressBar 值没有增加
【发布时间】:2013-05-17 11:08:04
【问题描述】:

我在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表单的进度条没有变化。它有什么问题?

【问题讨论】:

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


    【解决方案1】:

    您应该为您的任务使用BackgroundWorker

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

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

    【讨论】:

      【解决方案2】:

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

      Login login = new Login();
      

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

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

      login.Show() 
      

      在调用增量之前。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-18
        • 1970-01-01
        • 2016-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-29
        • 1970-01-01
        相关资源
        最近更新 更多