适用于 WinForms 的浏览器控件
您需要在 WinForms 应用程序中显示网页吗?您可以使用浏览器控件来实现。目前,您有多种免费和商业控件可供选择。不同的控件在功能和适用场景上各有侧重。
在这篇博文中,我们将介绍如何使用 DotNetBrowser——一个基于 Chromium 的浏览器控件,适用于对软件和供应商有高标准要求的关键业务场景。
如果您正在考虑在 WinForms 应用程序中使用 WebView2 或 CefSharp,建议阅读以下对比文章:
- 选择 DotNetBrowser 还是 WebView2。
- 选择 DotNetBrowser 还是 CefSharp。
何时选择 DotNetBrowser
DotNetBrowser 是一款商业软件,专为满足企业应用场景而设计。除了库本身,客户还能获得保密技术支持,响应时间仅一个工作日。
如果您的项目有以下需求,建议选择 DotNetBrowser:
- 易于使用的库;
- 及时的漏洞修复;
- 技术支持与协助;
- Chromium 的特定功能,如扩展程序、打印 API、屏幕共享、专有音频和视频编解码器等。
安装依赖项
DotNetBrowser 以一组 DLL 文件的形式提供,并可在 NuGet 上获取。
选择 “nuget.org” 作为包源,搜索 DotNetBrowser.WinForms
,然后点击 “Install” 按钮进行安装。
在 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();
}
}
}
运行后的效果如下:
在上述代码片段中,我们一次性创建了三个对象:IEngine
、IBrowser
和 BrowserView
。下面为您详细解释它们的作用。
DotNetBrowser 为您提供对底层浏览器 Engine 的精细化控制,并提供了相应的抽象层次结构。
IEngine
负责启动主 Chromium 进程。如果需要创建多个相互完全隔离的浏览器实例,您可以创建多个 Engine 实例。
创建 Engine 是一个耗时的阻塞操作。因此,我们不建议在主线程中创建 IEngine
。在这篇博文中,我们这样做只是为了简化代码。
每个 Engine 都包含一个或多个 IProfile
,允许通过将浏览器数据和设置分开来隔离同一 Engine 内的浏览器。您可以管理缓存、代理、网络、下载、权限和配置文件级别的其他功能。
在 IProfile
内,您可以创建多个 IBrowser
实例。IBrowser
与 Chromium 中的浏览器标签页最为相似。这些实例可用作功能齐全的浏览器,允许您加载网页、模拟鼠标和键盘输入、打开开发者工具等功能。
最后,BrowserView
负责在 UI 中显示浏览器内容。与 IBrowser
不同,它是一个独立的控件,即使不可见时,仍然可以在后台继续渲染。
结论
本文介绍了如何在 WinForms 中使用 DotNetBrowser,这是一款基于 Chromium 的浏览器控件,专为有重要应用场景、需要技术支持、自定义功能或高级功能(如 Chrome 扩展程序、打印 API )的企业设计。