博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CefSharp 在同一窗口打开链接的方法
阅读量:5923 次
发布时间:2019-06-19

本文共 2117 字,大约阅读时间需要 7 分钟。

摘要

在winform中使用cefsharp的时候,我们在浏览网页的时候,想在同一个窗口打开链接,而不是创建新的窗口。可以通过下面的方法实现。

解决方案

CefSharp 中控制弹窗的接口是  ,可以对 OnBeforePopup 进行重写,即可控制是否弹出新窗体。接口定义如下:

bool .OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)

要实现禁止弹出新窗体-在同一窗口打开,需要在原窗体加载目标Url,即参数targetUrl,并返回结果true,此时将会取消新窗口的创建,并在原窗口加载链接。具体实现方法体的代码如下:

///     /// 在自己窗口打开链接    ///     internal class OpenPageSelf : ILifeSpanHandler    {        public bool DoClose(IWebBrowser browserControl, IBrowser browser)        {            return false;        }        public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)        {        }        public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)        {        }        public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)        {            newBrowser = null;            var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;            chromiumWebBrowser.Load(targetUrl);            return true; //Return true to cancel the popup creation copyright by codebye.com.        }    }

在实例化浏览器的时候,指定处理程序

private void MainFrm_Load(object sender, EventArgs e)        {            this.WindowState = FormWindowState.Maximized;            CefSharp.CefSettings settings = new CefSharp.CefSettings();            CefSharp.Cef.Initialize(settings);            CefSharp.WinForms.ChromiumWebBrowser webView = new CefSharp.WinForms.ChromiumWebBrowser("https://www.baidu.com");            webView.Dock = DockStyle.Fill;            webView.LifeSpanHandler = new OpenPageSelf();            this.Controls.Add(webView);        }

上面红色部分的代码,是应用我们实现的窗口的打开方式。

参考资料

转载地址:http://ezavx.baihongyu.com/

你可能感兴趣的文章
高等数学(上册)
查看>>
win7给C盘扩容
查看>>
GIT使用笔记
查看>>
groovy-闭包
查看>>
ActionScript 3 中的强制类型转换
查看>>
PHP-九个非常有用的功能[转]
查看>>
C#使用WinAPI 修改电源设置,临时禁止笔记本合上盖子时睡眠
查看>>
ubuntu apt-get常用命令的使用
查看>>
【C++程序员学 python】python split and join 分割与合并
查看>>
python环境搭建和开发工具的配置【转】
查看>>
并行任务task
查看>>
linux下内存释放问题
查看>>
【Android】Android自定义属性,attr format取值类型
查看>>
JUC之Atomic系列12大类实例讲解和原理分解
查看>>
2013年个人小结
查看>>
SonicUI在MFC中的使用
查看>>
C#:添加web service引用
查看>>
Android NDK之一:什么是NDK?
查看>>
『设计前沿』14款精致的国外 iOS7 图标设计示例
查看>>
小菜学习Winform(四)MDI窗体(附示例)
查看>>