码迷,mamicode.com
首页 > Web开发 > 详细

使用CefSharp在.Net程序中嵌入Chrome浏览器(七)——右键菜单

时间:2019-01-10 13:57:18      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:mis   主程序   ast   false   handlers   comm   chromium   iframe   control   

原文:使用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元素的事件灵活显示菜单,虽然工作量大些,但更加灵活和自由,也可以和系统的右键菜单风格一致。

 

使用CefSharp在.Net程序中嵌入Chrome浏览器(七)——右键菜单

标签:mis   主程序   ast   false   handlers   comm   chromium   iframe   control   

原文地址:https://www.cnblogs.com/lonelyxmas/p/10249467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!