Winfrom窗体应用程序___CefSharp的基础应用

时间:2021-04-08 20:43:51

CefSharp在我的项目里最大的用处是使浏览器打开的页面再窗体打开 。

这个问题是在用Web项目是iframe打开连接时遇到的,牵扯到不同域的问题,无法用iframe实现,故转成winfrom窗体程序。

首先CefSharp可以在NeGet程序包下载;参考来自:easeyeah 的 CefSharp开源库的使用(一)

初始化设置代码:

 1 private void Form1_Load(object sender, EventArgs e)
 2         {
 3 
 4             //初始化
 5             CefSharp.Cef.Initialize();
 6 
 7             //实例化
 8             wb = new ChromiumWebBrowser("http://www.baidu.com");
 9            //设置停靠方式
10             wb.Dock = DockStyle.Fill;
11 
12             13 
14             //wb.IWebBrowser = new IWebBrowser_();
15             //加入到当前窗体中
16             //this.Controls.Add(wb);
17             groupBox1.Controls.Add(wb);
18             
19         }

之后就可以显示网页了(注意  我是放在GroupBox中的)

当然 这样并没有实现我之前的目的(不打开新标签)

继续:

Winfrom窗体应用程序___CefSharp的基础应用Winfrom窗体应用程序___CefSharp的基础应用
 1 using CefSharp;
 2 using CefSharp.WinForms;
 3 using System;
 4 using System.Collections.Generic;
 5 using System.Linq;
 6 using System.Text;
 7 using System.Threading.Tasks;
 8 
 9 namespace WindowsFormsApplication1
10 {
11     /// <summary>
12     /// 在自己窗口打开链接
13     /// </summary>
14     internal class OpenPageSelf : ILifeSpanHandler
15     {
16         public bool DoClose(IWebBrowser browserControl, IBrowser browser)
17         {
18             return false;
19         }
20 
21         public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
22         {
23 
24         }
25 
26         public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
27         {
28 
29         }
30 
31         public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl,
32 string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures,
33 IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
34         {
35             newBrowser = null;
36             var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;
37             chromiumWebBrowser.Load(targetUrl);
38             return true; //Return true to cancel the popup creation copyright by codebye.com.
39         }
40     }
41 }
OpenPageSelf

OpenPageSelf 类继承ILifeSpanHandler接口  重写方法

并在加载时候声明。

 1 private void Form1_Load(object sender, EventArgs e)
 2         {
 3 
 4             //必须进行初始化,否则就出来页面啦。
 5             CefSharp.Cef.Initialize();
 6 
 7             //实例化控件
 8             wb = new ChromiumWebBrowser("http://www.baidu.com");
 9             //设置停靠方式
10             wb.Dock = DockStyle.Fill;
11 
12 
13             wb.LifeSpanHandler = new OpenPageSelf();
14 
15 
16             //wb.IWebBrowser = new IWebBrowser_();
17             //加入到当前窗体中
18             //this.Controls.Add(wb);
19             groupBox1.Controls.Add(wb);
20             
21         }

 

注意第十三行的那个 

wb.LifeSpanHandler = new OpenPageSelf()

以上即可实现。

CefSharp简单使用Over~