【原】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);
}

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 详解浏览器内核 浏览器最重要或者说核心的部分是“Rendering Engine”,可大概译为“渲染引擎”,不过我...
    IT_小哥哥阅读 494评论 0 2
  • 一个很巧合的机会,需要统计公司系统(当然我只需要关注我自己负责的系统)支持哪些浏览器,以及公司PMO的质量管理部门...
    samzhao阅读 1,784评论 1 5
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,571评论 0 17
  • 内核 首先得搞懂浏览器内核指的是什么 浏览器内核又可以分成两部分:渲染引擎(layout engineer或者Re...
    闻金听凤阅读 960评论 0 0
  • 一花一世界,一叶一追寻, 我踏着初冬的脚步, 进京盼达人。 盛典, 惊艳了时光, 在心中燃起了盛世烟花。 长街长,...
    胖胖周公子阅读 294评论 0 5