使用CefSharp 在C#用户控件中嵌入Chrome浏览器使用方法

CEF(Chromium Embedded Framework, 嵌入式Chromium框架)是C/C++开发的库
目前 Google Chrome(Google浏览器),Chromium浏览器,Opera等都是基于CEF为核心,Webkit引擎的浏览器。

Xilium.CefGlue是对CEF项目的.net的包装,它是用P/Invoke的方式来调用CEF类库。
CEFSharp是用C++/CLI的方式来调用CEF类库的。

原先使用的是Xilium.CefGlue,如果只是单纯在窗口上实现的话是没问题的,由于我的需要做成用户控件,所以导致调用的时候一些dll文件无法调用到,用户控件无法正常加载到WinForm窗口上,后来改用CEFSharp

一. 开发环境


VS2010 +  CefSharp 49.0.1

二. 开发步骤(以CefSharp为例)

1. 新建Windows窗体应用程序 GoogleWebBrowserControl,使用.NET FrameWork 4.0,这里需要注意:CefSharp和.NET FrameWork版本要相对应。

2. 在生成=》配置管理器中,将活动解决方案平台改成 x86 (CEF不能自适应 x86 | x64,必须选择一个目标),目标平台也必须和解决方案平台一致。


3. 针对VS2010,默认是没有NuGet包管理器,需要在VS工具条—扩展管理器中添加NuGet程序包管理器

4.打开 NuGet 程序包管理器控制台:工具=>NuGet 程序包管理器=》程序包管理器控制台。搜索CefSharp.WinForm,选择版本和需要添加的项目,安装后会将所有需要的文件加入选择的项目中,并且将dll文件加入引入。

5.如果你已将CefSharp所有需要的文件已下载到本地,则第3、4步不需要操作,直接将下载的文件加入项目的Debug下,将CefSharp.Core.dll、CefSharp.dll、CefSharp.WinForms.dll文件引入项目中。

6.代码编写

注意:用户控件生成谷歌内核浏览器控件时,不能在用户控件中直接加载谷歌内核浏览器控件初始化的代码,必须到使用用户控件的页面中调用该方法。否则报错。
// 可选: (查看与cef有关的程序包)

7.新建项目,在项目中使用此用户控件,在后台代码中直接调用

执行后结果如下:

源码无法上传

时间: 2024-08-06 16:03:49

使用CefSharp 在C#用户控件中嵌入Chrome浏览器使用方法的相关文章

web页面动态加载UserControl,并调用用户控件中的方法来初始化控件

1,HTML页 头部注册: <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/CeShiBu.ascx" TagPrefix="UserControl" TagName="CeShiBu"%> <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/KaiFaBu.ascx" TagPrefix=&quo

asp.net在用户控件中使用ClientScript

在用户空间中调用ClientScript.RegisterClientScriptBlock方法 ClientScript的命名空间是System.Web.UI.Page,并且要实例化之后的Page才能条用ClientScript. 用户自定义空间不是继承自Page,因此不能直接使用ClientScript这个类.如果要使用这个类,需要通过找到调用页面对象的方式.具体做法: this.Parent.Page 找到这个对象之后,就可以像在普通页面中一样,自由调用System.Web.UI.Page

使用CefSharp在.Net程序中嵌入Chrome浏览器(二)——参数设置

在实现了.Net程序中嵌入Chrome浏览器后,下一步的个性化操作就是加入一些设置了,在前面的文章中,我们可以看到在使用Chrome控件前,有如下一个操作: ????var setting = new CefSharp.CefSettings();????CefSharp.Cef.Initialize(setting, true, false); 这个setting变量就是用来存放chrome的全局设置的地方,当需要进行设置的时候,只需要对它进行修改即可.例如,我们要修改缓存目录,只需要如下设置

使用CefSharp在.Net程序中嵌入Chrome浏览器(九)——性能问题

原文:使用CefSharp在.Net程序中嵌入Chrome浏览器(九)--性能问题 在使用CEF的过程中,我发现了一个现象:WPF版的CEF比Chrome性能要差:一些有动画的地方会掉帧(例如,CSS动画,全屏图片拖动等),视频播放的效果也没有Chrome流畅. 查了一下相关资料,发现CEFSharp.WPF不是直接渲染在控件上的,它的大概流程如下: CEFSharp.WPF的ChromiumWebBrowser控件本质上是一个图片 而是通过离屏渲染的方式渲染在缓冲区里, 绘制完成后,然后将缓冲

使用CefSharp在.Net程序中嵌入Chrome浏览器(八)——Cookie

原文:使用CefSharp在.Net程序中嵌入Chrome浏览器(八)--Cookie CEF中的Cookie是通过CookieManager来管理的,可以用它来设置发送的Cookie. 发送Cookie 发送Cookie的一个基本示例如下: var cookieManager = _chrome.GetCookieManager();cookieManager.SetCookie("http://localhost:5000/test", new Cookie(){    Name 

使用CefSharp在.Net程序中嵌入Chrome浏览器(十)——独立文件夹部署

原文:使用CefSharp在.Net程序中嵌入Chrome浏览器(十)--独立文件夹部署 CefSharp本身携带了一大堆文件,这些文件默认直接释放在exe文件底下,这种方式本身没有什么问题,但多了一大堆文件后不是很好看.本文这里就介绍一个方法,使得可以将CEF相关的文件部署到独立的文件夹. 在开始改造之前,还是得另外新建一个工程安装一次CEFSharp,这样才能获取到相关资源文件.然后从这些资源文件中分离出来. 首先把CEF进程相关的文件拷贝到一个独立的文件夹: 然后我们的程序中只需要引用CE

winform 中调用用户控件中 嵌套用户控件的事件

工作了很久,一直没有很深入的了解C#中的委托和事件. 来到新公司,主要的工作就是使用委托和事件操作数据.一下子不知道该如何下手.各方请教大神,得出下面的方法 1. 在A控件中定义一个事件,B控件触发的时候,调用一下这个事件.然后再在A的父级控件中写方法,+=的方式把方法委托给A的事件就行了 窗体: private void Form1_Load(object sender, EventArgs e)        {            UC_Content content = new UC_

清空控件中数据所使用的方法

如图清空控件中的信息是在还没有与数据库进行交互之前进行的操作,所以呢,就不需要和数据库进行交互 第一步,我们可以给用户一个友好提示,是否确认清空数据 DialogResult result= MessageBox.Show("您确定要清空所填入的数据?","用户提示",MessageBoxButtons.YesNo,MessageBoxIcon.Information); if (result == DialogResult.Yes) { //用户确认清空后的代码

使用CefSharp在.Net程序中嵌入Chrome浏览器(一)——简介

有的时候,我们需要在程序中嵌入Web浏览器,其实.Net Framework中本身就提供了WebBrowser控件,本身这个是最简单易用的方案,但不知道是什么原因,这个控件在浏览网页的时候有些莫名的卡顿,有的时候甚至能达到好几秒,严重影响体验. 这个时候,我们可以考虑使用第三方浏览器来代替系统的WebBrowser,常见的方案是使用版本帝Chrome,Chrome本身提供了供第三方程序嵌入的方案Chromium Embedded Framework (CEF),但这个是C++的接口,在.Net程