Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有类似于在CefSharp库中导航的事件WebBrowser?_C#_Wpf_Cefsharp - Fatal编程技术网

C# 是否有类似于在CefSharp库中导航的事件WebBrowser?

C# 是否有类似于在CefSharp库中导航的事件WebBrowser?,c#,wpf,cefsharp,C#,Wpf,Cefsharp,我需要调用事件时,我在网站上点击下载按钮,并立即获得下载链接。我知道它是如何与WebBrowser一起工作的: private void WebBrowser_Navigating(object sender, NavigatingCancelEventArgs e) { string url = e.Uri.ToString(); if (url.Contains("https://accounts.google.com/AccountChooser") {

我需要调用事件时,我在网站上点击下载按钮,并立即获得下载链接。我知道它是如何与WebBrowser一起工作的:

private void WebBrowser_Navigating(object sender, NavigatingCancelEventArgs e)
{
    string url = e.Uri.ToString();
    if (url.Contains("https://accounts.google.com/AccountChooser") 
    {
        _userAgentController.UserAgentRefresh();
    }

    if (url.Contains("get:")) //specific form of download link
    {
        DownloadModel(url);
    }
}
但我应该在CefSharp库中使用它,并使用使用下载url的DownloadModel方法


我尝试加载Changed和FrameLoadEnd事件,但无法获得所需的链接。

看起来CefSharp为您提供了一个接口来实现,该接口具有用于下载的回调

下面是一个例子:

  public class DownloadHandler : IDownloadHandler
    {
        public event EventHandler<DownloadItem> OnBeforeDownloadFired;

        public event EventHandler<DownloadItem> OnDownloadUpdatedFired;

        public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
        {
            var handler = OnBeforeDownloadFired;
            if (handler != null)
            {
                handler(this, downloadItem);
            }

            if (!callback.IsDisposed)
            {
                using (callback)
                {
                    callback.Continue(downloadItem.SuggestedFileName, showDialog: true);
                }
            }
        }

        public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
        {
            var handler = OnDownloadUpdatedFired;
            if (handler != null)
            {
                handler(this, downloadItem);
            }
        }
    }
从这里开始,下载完成后,您将拥有DownloadItem对象,该对象提供您需要的完整路径:


请参见此处的类结构:

谢谢,我使用了DownloadHandler.cs和OnBeforeDownloadFired来获取下载链接,然后不执行下载,所以我可以调用我的方法