适用于 WinForms 的浏览器控件

您需要在 WinForms 应用程序中显示网页吗?您可以使用浏览器控件来实现。目前,您有多种免费和商业控件可供选择。不同的控件在功能和适用场景上各有侧重。

在这篇博文中,我们将介绍如何使用 DotNetBrowser——一个基于 Chromium 的浏览器控件,适用于对软件和供应商有高标准要求的关键业务场景。

如果您正在考虑在 WinForms 应用程序中使用 WebView2 或 CefSharp,建议阅读以下对比文章:

何时选择 DotNetBrowser

DotNetBrowser 是一款商业软件,专为满足企业应用场景而设计。除了库本身,客户还能获得保密技术支持,响应时间仅一个工作日

如果您的项目有以下需求,建议选择 DotNetBrowser:

  • 易于使用的库;
  • 及时的漏洞修复;
  • 技术支持与协助;
  • Chromium 的特定功能,如扩展程序、打印 API、屏幕共享、专有音频和视频编解码器等。

安装依赖项

DotNetBrowser 以一组 DLL 文件的形式提供,并可在 NuGet 上获取。

选择 “nuget.org” 作为包源,搜索 DotNetBrowser.WinForms,然后点击 “Install” 按钮进行安装。

NuGet 中的 DotNetBrowser 包。

NuGet 中的 DotNetBrowser 包。

在 WinForms 应用程序中添加浏览器控件

要将 DotNetBrowser 控件添加到 WinForms 应用程序中,可参考以下代码片段:

using System.Windows.Forms;
using DotNetBrowser.Browser;
using DotNetBrowser.Engine;
using DotNetBrowser.WinForms;

namespace Embedding.WinForms
{
    public partial class WebViewForm : Form
    {
        private const string Url = "https://teamdev.com/dotnetbrowser";
        private readonly IBrowser browser;
        private readonly IEngine engine;

        public WebViewForm()
        {
            InitializeComponent();

            engine = EngineFactory.Create(RenderingMode.HardwareAccelerated);
            browser = engine.CreateBrowser();
            browser.Navigation.LoadUrl(Url);
            FormClosed += WebViewForm_FormClosed;

            BrowserView browserView = new BrowserView
            {
                Dock = DockStyle.Fill
            };
            Controls.Add(browserView);
            browserView.InitializeFrom(browser);
        }

        private void WebViewForm_FormClosed(object s, FormClosedEventArgs e)
        {
            browser?.Dispose();
            engine?.Dispose();
        }
    }
}

运行后的效果如下:

带有 DotNetBrowser 控件的 WinForms 应用程序。

带有 DotNetBrowser 控件的 WinForms 应用程序。

在上述代码片段中,我们一次性创建了三个对象:IEngineIBrowserBrowserView。下面为您详细解释它们的作用。

DotNetBrowser 为您提供对底层浏览器 Engine 的精细化控制,并提供了相应的抽象层次结构。

DotNetBrowser 的架构。

DotNetBrowser 的架构。

IEngine 负责启动主 Chromium 进程。如果需要创建多个相互完全隔离的浏览器实例,您可以创建多个 Engine 实例。

创建 Engine 是一个耗时的阻塞操作。因此,我们不建议在主线程中创建 IEngine。在这篇博文中,我们这样做只是为了简化代码。

每个 Engine 都包含一个或多个 IProfile,允许通过将浏览器数据和设置分开来隔离同一 Engine 内的浏览器。您可以管理缓存、代理、网络、下载、权限和配置文件级别的其他功能

IProfile 内,您可以创建多个 IBrowser 实例。IBrowser 与 Chromium 中的浏览器标签页最为相似。这些实例可用作功能齐全的浏览器,允许您加载网页、模拟鼠标和键盘输入、打开开发者工具等功能

最后,BrowserView 负责在 UI 中显示浏览器内容。与 IBrowser 不同,它是一个独立的控件,即使不可见时,仍然可以在后台继续渲染。

结论

本文介绍了如何在 WinForms 中使用 DotNetBrowser,这是一款基于 Chromium 的浏览器控件,专为有重要应用场景、需要技术支持、自定义功能或高级功能(如 Chrome 扩展程序、打印 API )的企业设计。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值