分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

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

发布时间:2023-09-06 02:29责任编辑:赖小花关键词:浏览器
原文:使用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浏览器(七)——右键菜单

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved