我正在使用 C# 上的进度条和 Web 浏览器控件,但我不知道在导航时制作平滑的进度条,您是否有逐步创建它的步骤,我将不胜感激。
问问题
19662 次
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
仅当您在操作之前知道要执行多少操作时,进度条才有用。对于加载网页,这意味着知道要加载的每个资源的大小。这真的不可行。还有其他部分无法真正预测:
- DNS 查询
- 打开与服务器的连接
- 从其他资源加载的资源,例如嵌入另一个 CSS 或 CSS 引用图像的 JavaScript
- ...
所有主流浏览器早已放弃尝试显示加载页面的进度。现在他们只显示加载活动。
WebBrowser 控件有一个ProgressChanged
事件,但我不知道它有多可靠。但这可能是你最好的尝试。不过,上面提到的所有要点仍然适用。您和浏览器都没有足够的知识来使进度条准确,因此它要么是一个粗略的近似值(在加载 HTML 后开始并仅表示加载的附加资源),要么在总资源的估计错误时突然跳动甚至倒退.
于 2012-08-05T06:55:46.590 回答