手把手教你使用CefSharp开发Winform(CefSharp 126.2.70.0内核版本)
第一步:了解什么是CefSharp
CefSharp是一款.Net编写的浏览器包,方便你在Winform和WPF中内嵌的Chrome浏览器组件,用过Chrome内核组件来加载处理html页面
第二步:搭建环境及工具(个人搭建所用的环境工具)
①Visual Studio2019
②CefSharp.WinForms及其依赖的包(我使用的126.2.70.0,直接上图)

③、.net Framework4.8
第三步:创建winform窗体:
①、打开VS2019——>新建winform窗体应用(.Net framework)——>安装NuGet包(CefSharp.Common、CefSharp.WinForms)
第四步:开始搭建winform浏览器(新建一个窗体,代码如下即可执行查看html效果啦)
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
InitializeChromium();
}
public void InitializeChromium()
{
CefSettings settings = new CefSettings();
String page = string.Format(@"{0}\test.html", Application.StartupPath);
if (!File.Exists(page))
{
MessageBox.Show("Error The html file doesn't exists : " + page);
}
Cef.Initialize(settings);
chromeBrowser = new ChromiumWebBrowser(page);
this.Controls.Add(chromeBrowser);
chromeBrowser.Dock = DockStyle.Fill;
BrowserSettings browserSettings = new BrowserSettings();
chromeBrowser.BrowserSettings = browserSettings;
}
public ChromiumWebBrowser chromeBrowser;
private void Form1_Load(object sender, EventArgs e)
{
}
}
第四步:js调用C#方法
①创建一个你想暴露给JavaScript的类(不要使用Form/Window或Control,如下我是创建的Boundobject类):
public class BoundObject
{
public int jia(int a, int b)
{
return a + b;
}
public void ceshi()
{
MessageBox.Show("cee");
}
public string cesi()
{
return "ces";
}
public string ceshia()
{
return "您好哇塞";
}
}
②在javascriptobjectrerepository中注册一个类的实例
//注册 BoundObject 时不使用 true 作为异步标志,这样 JavaScript 调用时将直接返回结果,而不是返回一个 Promise 对象
chromeBrowser.JavascriptObjectRepository.Register("boundAsync", new BoundObject(), false, BindingOptions.DefaultBinder);

③将之前在 C# 代码中通过 JavascriptObjectRepository.Register 方法注册的 JavaScript 对象绑定到当前的 JavaScript 上下文中(js中一定要加这句,不然调不到C#方法)。
CefSharp.BindObjectAsync("boundAsync");

可参考官网文档:https://github.com/cefsharp/CefSharp/wiki/CefSharp%E4%B8%AD%E6%96%87%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3#a4_1

浙公网安备 33010602011771号