1)使用VS2013,新建一个winform程序,然后用NutGet安装cefsharp.winform包;
2)添加后,直接运行会报错,因为Cefsharp没有针对AnyCpu的模式,所以将程序的生成目标平台改成x64(x86根据自己需要)
(点击生成--〉选项目所在的平台(默认只有AnyCpu),没有X64或者X86,自己可以新建一个目标平台;
3) 初始化代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private CefSharp.WinForms.ChromiumWebBrowser theBrowser; private void Form1_Load(object sender, EventArgs e) { theBrowser = new CefSharp.WinForms.ChromiumWebBrowser(@"D:\test\WindowsFormsApplication1\WindowsFormsApplication1\HTMLPage1.html"); theBrowser.Dock = DockStyle.Fill; this.Controls.Add(theBrowser); //theBrowser.GetBrowser().MainFrame. //theBrowser.RegisterJsObject("JsObj", new JsEvent(this.theBrowser), false); theBrowser.RegisterAsyncJsObject("JsObj", new JsEvent(this.theBrowser), false); } } }
4)其中的JsObj类:
public class JsEvent { public string MessageText = string.Empty; private CefSharp.WinForms.ChromiumWebBrowser OwnerBrowser; public JsEvent(CefSharp.WinForms.ChromiumWebBrowser OwnerBrowser) { this.OwnerBrowser = OwnerBrowser; } public void ShowTest() { this.OwnerBrowser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("abc();"); } }
5) 加载的Html文件内容:
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript"> function abc() { alert("hello"); } function DoA(a) { JsObj.MessageText = a; JsObj.ShowTest(); } </script> </head> <body> <input type="text" value="hello"/> <input type="text" value="dddd" /> <input type="button" title="测试" value="click" onclick="DoA('ddd');" /> </body> </html>
以上就是一个基本的的C#使用CefSharp的例子:
1)包含了基本设置;
2)如何加载或者初始化Cef 浏览器
3)C#与页面之间的互相调用方法。
利用Cef的好处还是很多的,基本的如下:
1)对于客户端程序,可以实现非常漂亮的可以移植和跨平台的UI;
2)对于BS架构程序,可以定制自己专用的浏览器,摆脱浏览器差异所带来的烦恼;
3)可以实现混合模式的客户端程序。