【原】C# Winform嵌入webkit内核浏览器

最近在做一个小工具,期间有个功能需要嵌入一个网页,自然而然地先用自带控件WebBrowser,结果运行一看,黑屏。经查证,原来该网页不支持所有版本的IE(哈哈,得多嫌弃IE啊),而WebBrowser并不支持其他内核,于是乎,只能改变思路,用第三方控件。接下来,就搜到了坑人的WebKit .NET项目(网上大部分的解决方案都是这坑货)。

WebKit .NET下载地址
https://sourceforge.net/projects/webkitdotnet/files/

为什么说它坑呢。
1.已经9年不维护,其内核版本极其老旧
2.引用方式不友好,需要复制一大坨文件到本地目录


QQ截图20190309133550.png

主要是内核版本太久,导致我的网页依然黑屏。

无奈,继续翻页搜索引擎,终于让我遇上了CefSharp.WinForms,CefSharp.WinForms是一个第三方的控件库,可以通过nuget管理,极其方便。
nuget搜索CefSharp.WinForms即可安装

调用示例:

var browser = new CefSharp.WinForms.ChromiumWebBrowser();
browser .Dock = DockStyle.Fill;
this.panel.Controls.Add(Browser);
browser .AddressChanged += Browser_AddressChanged;
browser .Load("http://www.baidu.com");

使用注意事项,ChromiumWebBrowser控件的部分事件并不是在主线程回调的。以AddressChanged这个事件为例,如果需要操作其他控件,需要将调用封送到主线程调用。以下是示例代码:

private void Browser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e)
{
    //OnAddressChanged是一个自定义的委托
    this.Invoke(OnAddressChanged);
}

完美解决,可以正常显示。

你可能感兴趣的:(【原】C# Winform嵌入webkit内核浏览器)