在 chromiumwebbrowser 中加载页面时,如何使用 progressBar 取消页面加载状态直到完成加载?

While loading a page in the chromiumwebbrowser how can I use a progressBar to displat the page loading state until finish loading?

提问人:jhon barns 提问时间:3/5/2023 更新时间:3/5/2023 访问量:121

问:

有一个loadingstatechanged事件,但我不确定在其中做什么? 有一个属性:IsLoading

e.IsLoading

但我想要的是将 progressBar 从 0 更新到 100 百分比或其他带有指示页面加载的 progressBar 的东西。

我已经在设计器中有一个 progressBar。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Weather
{
    public partial class GoogleMapsForm : Form
    {
        public GoogleMapsForm()
        {
            InitializeComponent();

            this.WindowState = FormWindowState.Maximized;
            chromiumWebBrowser1.LoadingStateChanged += ChromiumWebBrowser1_LoadingStateChanged;
            chromiumWebBrowser1.Load("D:\\Csharp Projects\\Weather\\map.html");
        }

        private void ChromiumWebBrowser1_LoadingStateChanged(object sender, CefSharp.LoadingStateChangedEventArgs e)
        {
           
        }

        private void GoogleMapsForm_Load(object sender, EventArgs e)
        {

        }
    }
}
C# WinForms

评论


答:

1赞 NineBerry 3/5/2023 #1

由于浏览器和 Web 服务器之间的通信方式,无法以百分比形式提供加载进度。看看主流浏览器,你会发现没有一个浏览器使用进度条来跟踪页面的加载状态。它们都使用某种形式的动画来显示加载状态。

如果要使用控件,请将其属性设置为“”,最初将其隐藏并仅在加载页面时显示它。ProgressBarStyleMarquee

private void ChromiumWebBrowser1_LoadingStateChanged(object sender, CefSharp.LoadingStateChangedEventArgs e)
{
    myProgressBar.Visible = e.IsLoading;
}

设置 的属性以控制动画速度。MarqueeAnimationSpeedProgressBar