【CefSharp】 禁用右键菜单 与 控制弹出窗口的方式(限版本39.0.0.1)

这周没什么时间,一开始就在忙一些CefSharp的事情,Win10的研究就放了下来,CefSharp的资料挺少的,但好在是开源的,可以我们便宜的折腾。因为两个的内容都不多,我就合成一篇文章啦。

这还里还要吐嘈一下WinForm,也可能是WPF玩的年头长了,觉得WinForm真TNND的难用呀,弄几个定义的控件,相当之麻烦。

回归正文。

 

因为新版本中接口发生了变化,该文章只适用于39.0.0.1。

一、禁用右键菜单

禁用右键菜单其实是很容易的。主就要是实现一个接口 IMenuHandler,这个接口有一个 OnBeforeContextMenu的方法,我们在这里让返回一个false,右键菜单就消失了。

C#代码
  1. internal class MenuHandler : IMenuHandler  
  2.     {  
  3.         public bool OnBeforeContextMenu(IWebBrowser browser, IContextMenuParams parameters)  
  4.         {  
  5.             return false;  
  6.         }  
  7.     }  

再将这个对像的实例赋给ChromiumWebBrowser对象的MenuHandler属性上就OK啦。

C#代码
  1. var browser = new ChromiumWebBrowser(url);  
  2. browser.MenuHandler = new MenuHandler();  
二、控制弹出窗口的方式
 
在CefSharp,如果打开一个网页,如果这网页要在新窗口开打,他真的会弹出一个新的窗口,但是这个窗口并不受我的们控制,比如,我们要强制在当前浏览器显示、我们要在一个TabControl的标签中显示,我们要一个自己风格的窗口。而且在WPF中,弹出的竟然是一个Form的窗口,WPF的同学是不是感到深深的内伤。
 
控制弹出窗口有到的接口:ILifeSpanHandler,
 
方法两个:OnBeforeClose,OnBeforePopup
 
控件弹出窗口主要是用到了 OnBeforePopup,它也有一个Boolean的返回值,当这个值为true的时候,CefSharp就不自己弹出窗口了,在这里,我们就可以偷偷的做自己的事情了。
C#代码
  1. internal class LifeSpanHandler : ILifeSpanHandler  
  2.     {  
  3.         public void OnBeforeClose(IWebBrowser browser)  
  4.         {  
  5.   
  6.         }  
  7.   
  8.         public bool OnBeforePopup(IWebBrowser browser, string sourceUrl, string targetUrl, ref int x, ref int y, ref int width, ref int height)  
  9.         {       //在这里,可以做你想做的事情哦  
  10.             return true;  
  11.         }  
  12.     }  
再将这个对像的实例赋给LifeSpanHandler属性上就OK啦。
C#代码
  1. var browser = new ChromiumWebBrowser(url);  
  2. browser.LifeSpanHandler = new LifeSpanHandler();  
 注:在接口的这个方法触发时,并不在STA线程,如果要对UI有操作的话,要回到UI线程。


上一篇: CefSharp 自定义右键菜单 (Winform版)
下一篇: Php判断蜘蛛和移动端的代码
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: c#
相关日志:
评论: 0 | 引用: 0 | 查看次数: 166
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑