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

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

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

何时选择 DotNetBrowser 

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

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

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

安装依赖项 

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

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

DotNetBrowser 的 NuGet 包列表

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 )的企业设计。

Spinner

发送中。。。

抱歉,发送中断

请再次尝试,如果问题仍然存在,请联系我们 info@teamdev.com.

阅读并同意条款以继续。

您的个人 DotNetBrowser 试用密钥和快速入门指南将在几分钟内发送至您的电子邮箱。