美文网首页
【原】C# Winform嵌入webkit内核浏览器

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

作者: yanzf | 来源:发表于2019-03-09 13:50 被阅读0次

    最近在做一个小工具,期间有个功能需要嵌入一个网页,自然而然地先用自带控件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内核浏览器

          本文链接:https://www.haomeiwen.com/subject/gdcrpqtx.html