C# 用于指示下载进度的进度条

C# 用于指示下载进度的进度条,c#,cefsharp,C#,Cefsharp,我正在做一个基于CefSharp的网络浏览器。当我尝试从web下载文件时,它会提示我保存该文件,当我按save时,它会下载该文件而不显示任何进度百分比。我想添加一个进度条来显示下载进度。我怎样才能做到这一点呢?您可以使用IDownloadHandler来实现这一点 假设您在XAML中有一个名为browser的浏览器控件和一个名为Bar的ProgressBar,您可以在代码隐藏中执行此操作: Browser.DownloadHandler = new MyDownloadHandler(Bar);

我正在做一个基于CefSharp的网络浏览器。当我尝试从web下载文件时,它会提示我保存该文件,当我按save时,它会下载该文件而不显示任何进度百分比。我想添加一个进度条来显示下载进度。我怎样才能做到这一点呢?

您可以使用
IDownloadHandler
来实现这一点

假设您在XAML中有一个名为
browser
的浏览器控件和一个名为
Bar
ProgressBar,您可以在代码隐藏中执行此操作:

Browser.DownloadHandler = new MyDownloadHandler(Bar);
以下是MyDownloadHandler的代码:

public class MyDownloadHandler : IDownloadHandler {
    private ProgressBar _bar;

    public MyDownloadHandler(ProgressBar bar) {
        _bar = bar;
    }

    public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback) {

    }

    public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback) {
        _bar.Dispatcher.Invoke(new Action(() => {
            Debug.Print("{0}/{1} bytes", downloadItem.ReceivedBytes, downloadItem.TotalBytes);

            _bar.Maximum = downloadItem.TotalBytes;
            _bar.Value = downloadItem.ReceivedBytes;
        }));
    }
}