.Net桌面端开发使用WebView2,可以放弃CefSharp?

前言

已更新后续:WebView2 使用及现状

最近研究.net Core的时候,发现微软终于放弃IE内核,拥抱Chrome了,这也算是微软对开源的决心越来越大吧。作为桌面端程序开发人员,不管是使用Winform还是WPF,如果想在界面上加载HTMl代码,使用自带的WebBrowser会发现是灾难性的事件,WebBrowser万年不变的IE7内核让不管多绚丽多彩的HTMl暗然失色,于是开始寻找替代方案,而CefSharp就是不二之选,CefSharp使用的是CEF开源框架,CEF 是一个基于google chromiun的简单的框架。

CefSharp: https://github.com/cefsharp/CefSharp/.

CefSharp提供Winform、WPF、OffScreen的NuGet获取下载,使用也很简单,只需要简单的配置一下即可享受Chrome浏览器的体验,之前写过一个 CefSharp 使用心得.

一、WebView2是什么?

Microsoft Edge WebView2 控件使你能够在本机应用程序中嵌入 web 技术 (HTML、CSS 和 JavaScript \ ) 。 WebView2 控件使用 Microsoft Edge () Chromium 作为呈现引擎在本机应用程序中显示 web 内容。 使用 WebView2,你可以将 web 代码嵌入本机应用程序的不同部分,或在单个 Web 视图中构建整个本机应用程序。
这是Micosoft官方文档的说明,其实就是跟之前的WebBrowser一样,也是基于本地的浏览器内核引擎来渲染网页的,只不过这次使用的是Edge的Chromium内核。所以要使用WebView2就必然需要本地安装了Microsoft Edge Chromium版本链接: https://www.microsoftedgeinsider.com/zh-cn/.。

二、使用步骤

1.必备条件

请确保在继续之前安装了以下先决条件列表:

Microsoft Edge (Chromium 在 windows 10、windows 8.1 或 windows 7 上安装了) 的未放大频道。
Visual Studio 2017 或更高版本。

2.引入库

直接Nuget:(请注意必须使用预发行版本,稳定版本还不能使用)
在这里插入图片描述
直接在XAML里引入库

xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"

<wv2:WebView2 x:Name="webView" Grid.Row="1"  Source="https://www.baidu.com" />

此时会发现,程序并未F5运行,但设计窗口直接加载了百度的页面,说明直接使用Edge渲染了网页。这个对开发人员来说真是舒服呀。
在这里插入图片描述
经过测试发现:WebView2支持H264的视频解码,要知道CefSharp可是需要自己手工重编译CEF才行的呀。
在这里插入图片描述
在后台可通过调用 CoreWebView2Environment.GetAvailableBrowserVersionString() 来获取当前的浏览器内核版本

string coreWebView2Environment = CoreWebView2Environment.GetAvailableBrowserVersionString();

页面的跳转通过Navigate:

private void btnGo_Click(object sender, RoutedEventArgs e)
        {
            if (webView != null && webView.CoreWebView2 != null)
            {
                webView.CoreWebView2.Navigate(tbUrl.Text);
            }
        }
 这里需要说明的是:必须对CoreWebView2进行初始化,看一下微软官方的解释是因为创建 CoreWebView2 是一个昂贵的操作,它涉及启动 Edge 浏览器进程之类的操作。

 有两种方法可导致创建 CoreWebView2:
 1)调用 EnsureCoreWebView2Async 方法。 这称为显式初始化。 
 2)设置 Source 属性(例如,可以通过标记执行此操作)。 这称为隐式初始化。

总结

WebView2未来应该是要替代WebBrowser的,虽然需要依赖本机自带的Edge chromium内核,但相信未来的windows 更新肯定会以Edge chromium内核代替IE内核,并且不需要重新下载Chrome浏览器,使用Edge也会有一样的浏览体验。而作为桌面开发人员来说,使用WebView2直接加载网页会比使用CefSharp来得更舒服,不再需要引入一堆的CEF类库,同时安装文件也会缩小很多。

已更新后续:WebView2 使用及现状

### 回答1: 首先,您需要下载安装WebView2 SDK,然后在Visual Studio中使用NuGet管理器安装Microsoft.Web.WebView2.WinForms包。接下来,您可以在您的VB.NET应用程序中添加WebView2控件,并使用以下代码来加载网页:webView2.Source = New Uri("http://example.com")。 ### 回答2: WebView2 是一个使用 Chromium 内核的 Web 控件,方便在 VB.NET 程序中嵌入网页视图。以下是使用 WebView2 控件编写 VB.NET 程序的基本步骤: 第一步:安装 WebView2 运行时 1. 在 Visual Studio 中打开 VB.NET 程序项目。 2. 在 "工具" 菜单下选择 "NuGet 包管理器",然后选择 "管理解决方案的 NuGet 包"。 3. 在 "NuGet 包管理器控制台" 中,运行以下命令安装 WebView2 运行时: Install-Package Microsoft.Web.WebView2 -Version 1.0.1106.1 第二步:添加 WebView2 控件到窗体 1. 在窗体设计器中,从工具箱中找到 "WebView2" 控件并添加到窗体上。 2. 调整控件的大小和位置,使其适应窗体布局。 第三步:在代码中使用 WebView2 控件 1. 在窗体代码中,添加以下命名空间引用: Imports Microsoft.Web.WebView2.WinForms 2. 在窗体类中定义一个 WebView2 实例变量,例如: Private webView As WebView2 3. 在窗体的加载事件中初始化 WebView2 控件,例如: Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load webView = New WebView2() webView.Dock = DockStyle.Fill Me.Controls.Add(webView) webView.Source = New Uri("https://example.com") End Sub 在上述代码中,将 WebView2 控件添加到窗体并指定要加载的网页。 至此,你已经成功使用 WebView2 控件编写了一个简单的 VB.NET 程序。你可以根据需要进一步定制 WebView2 的功能,如执行 JavaScript、处理事件等。 需要注意的是,你可能还需要将 WebView2 运行时进行包含到你的应用程序安装程序中,以便将 WebView2 与你的程序一起分发给用户。具体的部署可以参考 Microsoft 官方文档。 ### 回答3: 在VB.NET使用WebView2,首先需要进行以下步骤: 1. 安装WebView2控件:在电脑上安装WebView2控件。可以从WebView2的官方网站(https://developer.microsoft.com/en-us/microsoft-edge/webview2/)下载最新版本的运行时组件。 2. 创建VB.NET项目:在Visual Studio中创建一个新的VB.NET项目。 3. 添加WebView2控件到表单:打开Visual Studio的“工具箱”,然后找到“WebView2”控件。将其拖放到表单上以添加控件。 4. 设置WebView2控件的属性:选中刚添加的WebView2控件,然后在属性窗口中为其设置属性。例如,可以设置WebView2控件的大小、位置等。 5. 编写VB.NET代码:使用VB.NET代码来控制WebView2控件的行为。例如,可以加载网页、显示网页标题等等。以下是一个简单的示例代码: ```vb Imports Microsoft.Web.WebView2.Core Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' 初始化WebView2控件 webView2Control.Source = New Uri("https://www.example.com") ' 注册WebView2控件的事件 AddHandler webView2Control.NavigationCompleted, AddressOf WebView2_NavigationCompleted End Sub Private Sub WebView2_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) ' 在导航完成时显示网页标题 MessageBox.Show(webView2Control.CoreWebView2.DocumentTitle) End Sub End Class ``` 在这个示例中,首先在窗体加载时初始化WebView2控件,并通过指定URL加载一个网页。然后,通过注册NavigationCompleted事件来监听WebView2控件的导航完成事件。在导航完成时,使用MessageBox显示网页的标题。 以上就是在VB.NET使用WebView2控件的基本步骤和示例代码。当然,你还可以根据具体需求来使用WebView2控件,例如执行JavaScript代码、与网页进行交互等等。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值