zoukankan      html  css  js  c++  java
  • 使用CefSharp在.Net程序中嵌入Chrome浏览器(七)——右键菜单

    一个常用的功能就是禁止浏览器本身的右键菜单,靠在WPF中拦截鼠标事件是不行的,可以通过设置MenuHandler来实现。

    首先实现一个IContextMenuHandler。 

    public class NullMenuHandler : IContextMenuHandler
    {
        public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
        {
            return false;
        }
         public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            model.Clear();
        }
     
        public void OnContextMenuDismissed(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame)
        {
        }
     
        public bool OnContextMenuCommand(IWebBrowser        chromiumWebBrowser, IBrowser browser, IFrame frame,
                                         IContextMenuParams parameters,
                                         CefMenuCommand     commandId, CefEventFlags eventFlags)
        {
            throw new NotImplementedException();
        }
    }
    View Code

    然后指定chrome的MenuHandler即可。

    _webView = new ChromiumWebBrowser()
    {
        MenuHandler = new NullMenuHandler()

    };

    这种方式也可以自定义右键菜单,详细信息参考如下。MenuHandler.cs

    定制右键菜单也可以采用如下做法:

    1. 用上面的方式将Chrome自己的菜单屏蔽,
    2. 把HTML元素的右键点击事件通过脚本集成的方式回调给主程序,弹出自定义的WPF右键菜单
    3. WPF的右键菜单执行后,将命令用脚本的方式传递给Chrome

    这样的方式下,可以直接使用WPF的右键菜单,并且也可以根据html元素的事件灵活显示菜单,虽然工作量大些,但更加灵活和自由,也可以和系统的右键菜单风格一致。

  • 相关阅读:
    centos 编码问题 编码转换 cd到对应目录 执行 中文解压
    centos 编码问题 编码转换 cd到对应目录 执行 中文解压
    centos 编码问题 编码转换 cd到对应目录 执行 中文解压
    Android MVP 十分钟入门!
    Android MVP 十分钟入门!
    Android MVP 十分钟入门!
    Android MVP 十分钟入门!
    mysql备份及恢复
    mysql备份及恢复
    mysql备份及恢复
  • 原文地址:https://www.cnblogs.com/TianFang/p/9919768.html
Copyright © 2011-2022 走看看