手把手教你使用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

 

posted @ 2024-06-28 14:20  fulllove  阅读(551)  评论(0)    收藏  举报