【问题标题】:How to work with Progress Bar?如何使用进度条?
【发布时间】:2012-07-29 01:23:51
【问题描述】:

我正在处理 WPF windows 应用程序中的进度条。我的问题是我有一个 microsoft access 数据库格式的数据,我想将数据复制到数据库中,复制应该只在单击按钮后发生。在数据复制到数据库期间,进度条应该得到启用。

【问题讨论】:

  • 这只有在您能够预测写入数据需要多长时间时才有意义。你是?或者有没有其他方法可以获得进度百分比?你是不是一块一块地写数据?
  • 你四天前问过这个问题;那时你几乎没有做任何事情,当你被要求展示你迄今为止尝试过的代码时没有回应。这不会给你一个有用的答案——你需要问一个有用的问题。

标签: c# .net wpf telerik


【解决方案1】:

我不确定,但我认为后台工作人员是您正在寻找的,这里是链接 BackGroundWorker

【讨论】:

    【解决方案2】:

    为了使用进度条,您需要创建一个与 ui 线程分开的新线程。后台工作人员可能是这样做的最佳方式:

     private BackgroundWorker worker = new BackgroundWorker();
    
     worker.WorkerReportsProgress = true;
     worker.DoWork += new DoWorkEventHandler(worker_DoWork);
     worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
     Worker.ProgressChanged += new ProgressChangedEventHandler(Worker_ProgressChanged);
    

    在 worker_DoWork 事件中是你应该放置你想做的东西的地方。在这种情况下复制数据。这也是我将进度条控件设置为可见的事件(默认情况下应该不可见)。为了更新进度条上的值,你需要做

     worker.ReportProgress(int amountDone)
    

    正如 Vale 在您的帖子中评论的那样,现在由您制定一种切实可行的方法来获得已完成工作的百分比/数量,在这种情况下,行数可能是最好的方法它:NumberOfRowsCopied/TotalNumberOfRows * 100 = 完成百分比?

    要启动后台工作者,请在您的按钮单击事件/命令中:

    if (bw.IsBusy != true)
    {
        bw.RunWorkerAsync();
    }
    

    如果您对计算出取得的进展没有信心,那么也许可以改用侯爵控件,它只会向用户显示程序没有崩溃并且仍在运行。

    【讨论】:

      猜你喜欢
      • 2012-08-21
      • 1970-01-01
      • 2015-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多