您现在的位置是:首页 > 文章详情

新版【CefSharp】 禁用右键菜单 43.00+

日期:2018-09-10点击:581
原文: 新版【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();
}
}

 

原文链接:https://yq.aliyun.com/articles/677435
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章