小工具知识网

当前位置: 首页 > 行业知识 > 【C#】用CefSharp.ChromiumWebBrowser做winform开发过程中遇到的一些坑

行业知识

【C#】用CefSharp.ChromiumWebBrowser做winform开发过程中遇到的一些坑

2026-11-11 21:12:43 来源:互联网转载

文章目录

  • 使用键盘F5刷新、F12打开控制台
  • 浏览器默认下载弹窗
  • 禁用GPU配置
  • 跨域问题

    使用键盘F5刷新、F12打开控制台

    public class CEFKeyBoardHander : IKeyboardHandler{    public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)    {        if (type == KeyType.KeyUp && Enum.IsDefined(typeof(Keys), windowsKeyCode))        {            var key = (Keys)windowsKeyCode;            switch (key)            {                case Keys.F12:                    browser.ShowDevTools();                    break;                case Keys.F5:                    if (modifiers == CefEventFlags.ControlDown)                    {                        //MessageBox.Show("ctrl+f5");                        browser.Reload(true); //强制忽略缓存                    }                    else                    {                        //MessageBox.Show("f5");                        browser.Reload();                    }                    break;            }        }        return false;    }    public bool OnPreKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)    {        return false;    }}
    WebBrowser = new ChromiumWebBrowser();this.Controls.Add(WebBrowser);WebBrowser.KeyboardHandler = new CEFKeyBoardHander();

    浏览器默认下载弹窗

    public class CefDownloadHandler : IDownloadHandler{    public event EventHandler OnBeforeDownloadFired;    public event EventHandler OnDownloadUpdatedFired;    public bool CanDownload(IWebBrowser chromiumWebBrowser, IBrowser browser, string url, string requestMethod)    {        //可以支持全部,也可以根据配置去自定义支持的文件类型        //return "xls|xlsx".Split('|').ToList().Contains(url.Substring(url.LastIndexOf(".") + 1).ToLower());        return true;    }    public void OnBeforeDownload(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)    {        OnBeforeDownloadFired?.Invoke(this, downloadItem);        if (!callback.IsDisposed)        {            using (callback)            {                callback.Continue(downloadItem.SuggestedFileName, showDialog: true);            }        }    }    public void OnDownloadUpdated(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)    {        OnDownloadUpdatedFired?.Invoke(this, downloadItem);    }}
    WebBrowser = new ChromiumWebBrowser();WebBrowser.DownloadHandler = new CefDownloadHandler();

    禁用GPU配置

    var setting = new CefSettings();setting.CefCommandLineArgs.Add("disable-gpu", "1")

    跨域问题

    setting.CefCommandLineArgs.Add("--disable-web-security", "");

    待续未完……

上一篇:腾讯管家服务器怎么安装?

下一篇:没有服务器怎么架设传奇?