2

我正在使用 C# 上的进度条和 Web 浏览器控件,但我不知道在导航时制作平滑的进度条,您是否有逐步创建它的步骤,我将不胜感激。

4

3 回答 3

10

使用WebBrowser.ProgressChanged事件:

private void WebBrowser1_ProgressChanged(Object sender, 
                                         WebBrowserProgressChangedEventArgs e)
{
    progressBar.Maximum = (int) e.MaximumProgress;
    progressBar.Value = (int) e.CurrentProgress;
}
于 2012-08-05T07:37:02.343 回答
3
private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
{
    progressBar1.Maximum = 100;
    progressBar1.Minimum = 0;
    if ((e.CurrentProgress > 0) && (e.CurrentProgress < 100))
    {
        progressBar1.Value = (int)e.CurrentProgress;
    }
}
于 2015-03-23T14:28:06.257 回答
3

仅当您在操作之前知道要执行多少操作时,进度条才有用。对于加载网页,这意味着知道要加载的每个资源的大小。这真的不可行。还有其他部分无法真正预测:

  1. DNS 查询
  2. 打开与服务器的连接
  3. 从其他资源加载的资源,例如嵌入另一个 CSS 或 CSS 引用图像的 JavaScript
  4. ...

所有主流浏览器早已放弃尝试显示加载页面的进度。现在他们只显示加载活动。

WebBrowser 控件有一个ProgressChanged事件,但我不知道它有多可靠。但这可能是你最好的尝试。不过,上面提到的所有要点仍然适用。您和浏览器都没有足够的知识来使进度条准确,因此它要么是一个粗略的近似值(在加载 HTML 后开始并仅表示加载的附加资源),要么在总资源的估计错误时突然跳动甚至倒退.

于 2012-08-05T06:55:46.590 回答