cefsharp如何自定义浏览器右键菜单

cefsharp如何自定有浏览器右键菜单


新建一个自定义菜单类

    internal class CustomMenuHandler : CefSharp.IContextMenuHandler
    {
        public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            //清空旧菜单
            model.Clear();



            // 添加新菜单
            model.AddItem((CefMenuCommand)26501, "打开开发工具");
            model.AddItem((CefMenuCommand)26502, "关闭开发工具");

            //添加分割线
            model.AddSeparator();

            // 再增加一个
            model.AddItem((CefMenuCommand)26503, "收藏网页");
        }

        public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
        {
            if (commandId == (CefMenuCommand)26501)
            {
                browser.GetHost().ShowDevTools();
                return true;
            }

            // 根据id来处理
            if (commandId == (CefMenuCommand)26502)
            {
                browser.GetHost().CloseDevTools();
                return true;
            }

            // 
            if (commandId == (CefMenuCommand)26503)
            {
                MessageBox.Show("成功了");
                return true;
            }

      


            return false;
        }

        public void OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame)
        {

        }

        public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
        {
            return false;
        }
    }

在创建brower后增加一条属性

 browser = new ChromiumWebBrowser("bfw.wiki")
            {
                Dock = DockStyle.Fill,
            };
            browser.LifeSpanHandler = new OpenPageSelf();
            browser.MenuHandler = new CustomMenuHandler();

ok大工搞成

{{collectdata}}

网友评论0