【CefSharp】 禁用右键菜单 与 控制弹出窗口的方式

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

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

回归正文。

一、禁用右键菜单

禁用右键菜单其实是很容易的。主就要是实现一个接口 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,如果打开一个网页,如果这网页要在新窗口开打,他真的会弹出一个新的窗口,但是这个窗口并不受我的们控制,比如,我们要强制在当前浏览器显示、我们要在一个TabControl的标签中显示,我们要一个自己风格的窗口。而且在WPF中,弹出的竟然是一个Form的窗口,WPF的同学是不是感到深深的内伤。

控制弹出窗口有到的接口:ILifeSpanHandler,

方法两个:OnBeforeClose,OnBeforePopup

控件弹出窗口主要是用到了 OnBeforePopup,它也有一个Boolean的返回值,当这个值为true的时候,CefSharp就不自己弹出窗口了,在这里,我们就可以偷偷的做自己的事情了。

    internal class LifeSpanHandler : ILifeSpanHandler
    {
        public void OnBeforeClose(IWebBrowser browser)
        {

        }

        public bool OnBeforePopup(IWebBrowser browser, string sourceUrl, string targetUrl, ref int x, ref int y, ref int width, ref int height)
        {       //在这里,可以做你想做的事情哦
            return true;
        }
    }

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

var browser = new ChromiumWebBrowser(url);
browser.LifeSpanHandler = new LifeSpanHandler();

注:在接口的这个方法触发时,并不在STA线程,如果要对UI有操作的话,要回到UI线程。

本文地址:http://www.cnblogs.com/gaoshang212/p/4551431.html

时间: 2024-08-05 12:35:34

【CefSharp】 禁用右键菜单 与 控制弹出窗口的方式的相关文章

WPF 如何控制右键菜单ContextMenu的弹出

在具体做一些项目的时候,有时候需要需要先左键点击某个节点,然后再右键点击节点的时候才弹出右键菜单,所以直接右键点击时需要禁用掉右键菜单,这里比如我们为Grid添加了ContextMenu,但是我们需要设置一个bool型的变量isSelected,当我们执行到MouseLeftButtonDown事件中的时候,我们就可以将isSelected设置为true,然后在Grid中添加PreviewMouseRightButtonUp="OnMouseRightButtonUp"(隧道事件路由)

js 控制弹出窗口的大小

<SCRIPT LANGUAGE=javascript> window.open ('open.html', 'newwindow','height=200, width=400, top=50%,left=50%, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no,status=no') </SCRIPT> 参数解释: LANGUAGE=javascript // 代表脚本开始 window.open

菜单和弹出窗口

在app中有一些展示二级内容和活动的机制: - 上下文动作模块 :一个动作模块会在用户选择某项后开始,在这个选项上actionbar转换成语境的模块展现出相关的动作 - 弹出菜单 模块菜单是绑定在某个视图上的,菜单展示在view的下方,被用来提供溢出的菜单允许二级动作. - 弹出窗口 简单的对话窗口出现时会获得焦点,用来展示额外的信息 - 对话碎片 一个完全自定义的对话窗口出现在活动上方,包含在碎片中定义的全部内容.最灵活的方法但是也十分复杂 语境动作模块 关联项的重要的动作应该通过构建预警动作

jsp网页弹出窗口的多种办法

http://blog.csdn.net/huangfoxjava/article/details/2973033 登录|注册     huangfoxjava的专栏 目录视图 摘要视图 订阅 关于jsp网页弹出窗口[很多种方法......] 分类: JSP2008-09-24 14:22 5799人阅读 评论(0) 收藏 举报 jspjavascript框架html脚本浏览器 各种弹出页面的设计 [1.普通的弹出窗口] 其实代码非常简单: <SCRIPT LANGUAGE=javascript

asp .NET弹出窗口 汇总(精华,麒麟创想)

asp .NET弹出窗口 汇总(精华,麒麟创想) 注://关闭,父窗口弹出对话框,子窗口直接关闭 this.Response.Write("<script language=javascript>window.close();</script>"); //关闭,父窗口和子窗口都不弹出对话框,直接关闭 this.Response.Write("<script>");this.Response.Write("{top.ope

JS弹出窗口代码大全(详细整理)

1.弹启一个全屏窗口 复制代码代码如下: <html> <body http://www.jb51.net','脚本之家','fullscreen');">; <b>www.jb51.net</b> </body> </html> 2.弹启一个被F11化后的窗口 复制代码代码如下: <html> <body 'http://www.jb51.net','脚本之家','channelmode');"

asp .NET弹出窗口汇总

注://关闭,父窗口弹出对话框,子窗口直接关闭 this.Response.Write("<script language=javascript>window.close();</script>"); //关闭,父窗口和子窗口都不弹出对话框,直接关闭 this.Response.Write("<script>");this.Response.Write("{top.opener =null;top.close();}&q

HTML页面弹出窗口调整代码总结

弹出跟你当前的窗口有没有菜单工具栏没有关系,你只要在页面中写一个脚本它就弹出了.比如<a href=# onclick="window.open('xxx.aspx','窗口名称','参数');">xxxxx</a> 以下列出一些弹出窗口的参数,你可自行设定,参数之间用逗号分隔 可选.字符串--列出对象表并用逗号分开.每一项都有自己的值,他们将被分开(如:"fullscreen=yes, toolbar=yes").下面是被支持的各种特性.

js弹出窗口总结6种弹窗方法

注: //关闭,父窗口弹出对话框,子窗口直接关闭 this.Response.Write("<script language=javascript>window.close();</script>"); //关闭,父窗口和子窗口都不弹出对话框,直接关闭 this.Response.Write("<script>"); this.Response.Write("{top.opener =null;top.close();}