新版【CefSharp】 禁用右键菜单 43.00+
禁用右键菜单其实是很容易的。主就要是实现一个接口 IMenuHandler ,这个接口有一个 OnBeforeContextMenu 的方法,我们在这里让返回一个false,右键菜单就消失了。
internal class MenuHandler : IMenuHandler { public bool OnBeforeContextMenu(IWebBrowser browser, IContextMenuParams parameters) { return false; } }
再将这个对像的实例赋给 ChromiumWebBrowser 对象的 MenuHandler 属性上就OK啦。
var browser = new ChromiumWebBrowser(url); browser.MenuHandler = new MenuHandler();
以上的方法适用于老版本的CEFsharp
43.00开始,IMenuHandler已经改名了,直接复制以上代码是不存在的
问了高手,自己琢磨了下 原来 改成了 IContextMenuHandler
而这个接口下面已经有了几个控制菜单的方法,由于本人入门C#不深,只能根据vs提示,提示说接口需要重写,
就根据提示,重写了方法,但是默认都是throw new NotImplementedException();
很明显这样是不行的,这三个方法从字面的理解,控制菜单的出现的应该是OnBeforeContextMenu,有2个,一个是bool,一个就不知道了
仔细看,第二个不需要返回值,里面有个IMenuModel model,无意中在网上看到了高手直接调用cef下用cefsharp的一个方法model.Clear();
胡乱写下了如下代码,还请高手看到之后指正
internal class MenuHandler : IContextMenuHandler
{
public bool OnBeforeContextMenu(IWebBrowser browser,IBrowser ibrower,IFrame iframe,IContextMenuParams icontextmenuparams,IMenuModel imenumodel )
{
return false;
}
public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
{
return false;
//throw new NotImplementedException();
}
public void OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame)
{
// throw new NotImplementedException();
}
void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
{
model.Clear();
}
}
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
javascript中escape()、unescape()、encodeURI()、encodeURIComponent()、decode...
这些URI方法encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent()代替了BOM的escape()和unescape()方法。URI方法更可取,因为他们对所有Unicode编号编码,而BOM方法只能对ASCII编号正确编码。尽量避免使用escape()和unescape()方法。 js对文字进行编码设计三个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1、传递参数时,需要使用encodeURIComponent,这样组合的url才不会被#等特殊字段截断。 例如: 2、进行url跳转时可以整体使用encodeURI 例如:location.href = encodeURI(http://cang.baidu.com/do/s?word=百度&ct=21); 3、js使用数据时可以使用escape 例如:搜藏中history纪录 4、escape对0-255以外的unicode值进行...
- 下一篇
wpf CefSharp 与 js交互
原文: wpf CefSharp 与 js交互 通过 NuGet 获取 CefSharp.WpF 组件。 xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf" //加载 需要把项目的 cpu 设置成 x86 ,Framework4.5 //使用控件 <cefSharp:ChromiumWebBrowser Name="mychrome"></cefSharp:ChromiumWebBrowser> this.mychrome.MenuHandler = new MenuHandler(); //去掉右键菜单 需要实现IContextMenuHandler 这个接口 this.mychrome.Address = @"url"; this.mychrome.RegisterJsObject("JsObj", new CallbackObjectForJs(),false); //带false 可以识别大写字母开头的函数或变量 //this.mychrome.RegisterJsObj...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Mario游戏-低调大师作品
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G