CefSharp ProgressBar 用于指示下载进度
CefSharp ProgressBar for indicating download progress
我正在制作一个基于 CefSharp 的网络浏览器。当我尝试从 Web 下载文件时,它会提示我保存文件,当我按保存时,它会下载文件但不会显示任何进度百分比。我想添加一个 ProgressBar 来显示下载进度。我该怎么做?
您可以为此使用 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;
}));
}
}
我正在制作一个基于 CefSharp 的网络浏览器。当我尝试从 Web 下载文件时,它会提示我保存文件,当我按保存时,它会下载文件但不会显示任何进度百分比。我想添加一个 ProgressBar 来显示下载进度。我该怎么做?
您可以为此使用 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;
}));
}
}