如何在Web浏览器导航时使进度条工作?

我正在使用C#上的进度条和Web浏览器控件,但是我不知道在导航时创建一个平滑的进度条,你是否已经逐步创建它,我会很感激。

使用WebBrowser.ProgressChanged事件:

 private void WebBrowser1_ProgressChanged(Object sender, WebBrowserProgressChangedEventArgs e) { progressBar.Maximum = (int) e.MaximumProgress; progressBar.Value = (int) e.CurrentProgress; } 

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

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

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

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

 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; } }