状态条进度条

Posted

技术标签:

【中文标题】状态条进度条【英文标题】:Status strip progress bar 【发布时间】:2014-04-18 10:08:09 【问题描述】:

我正在做网络扫描应用程序。该应用程序运行良好,只是我想添加ProgressBar,它显示从用户单击扫描到扫描完成的进度。

private void scanClick(object sender, System.EventArgs e)

    if (StatusLabel.Text == "Ready")
    
        StatusLabel.Text = "Please wait while processing is done...";
      
    //scanning operation begins
    //label changed when scan completed
    StatusLabel.Text = "scan completed";                           

现在我有一个类似这样的进度条:

如何将进度条与扫描作业同步。请指教。

【问题讨论】:

您使用什么 API 进行扫描?这会通知您进度吗? 你可以使用 BackgroundWorker 来更新你的进度条。 如果您使用的核心 API 不提供进度信息,@MaxMommersteeg BackGroundWorker 将毫无用处。 我没有看到 TS 谈论使用 API... @MaxMommersteeg 那么如何在不使用 API 的情况下进行扫描? 【参考方案1】:

如果您不知道这两个 cmets 之间的进度,则无法将进度条与扫描操作同步

//scanning operation begins
//label changed when scan completed

另一种方法是显示进度条左右移动,显示扫描正在进行中,同时不知道何时完成。

使用后台线程执行扫描操作,在主线程中执行进度更新

【讨论】:

【参考方案2】:

如果你在同一个线程中做一些耗时的操作,那么更新进度并调用Application.DoEvents();

如果你在做异步操作,那么用Control.Invoke方法更新ProgressBar。

【讨论】:

以上是关于状态条进度条的主要内容,如果未能解决你的问题,请参考以下文章

C# WinForm自定义进度条

C#进度条怎么用 / C#progressBar的用法

vb的进度条怎么用?

ReactJS进度条使用状态动态更新?

如何在状态栏中对齐进度条?

Qt编写自定义控件13-多态进度条