WinForm程序嵌入Web网页

文章目录


前言

由于此项目需要winform客户端嵌入web网页并于JAVA端交互数据,所以研究了一下嵌入web网页这部分,趟了一遍雷,这里做下记录。


一、三方库或控件的选择测试

1 .首先是用了 WebBrowser 控件,发现可以打开部分页面,但是有很多页面打不开,性能相对较弱,支持感觉很拉跨,于是弃用了换其他的。

2 .然后用了 Microsoft Edge WebView2 这个做demo测试,兼容性较好,我所需要的页面都可以打开,通过NeGet安装SDK,DLL尺寸较小,对项目安装包大小几乎没有影响。

最后我选择的这个,后续会讲一下安装使用步骤。

3 .CefSharp也通过NeGet安装SDK,也可以打开我需要的所有页面,不足的是运行时环境+SDK包比较大,看网络上说此库兼容性、支持性要比 Microsoft Edge WebView2 强大,我没要做更多的测试,感兴趣的可以自己写个demo试试。

二、Microsoft Edge WebView2安装、使用步骤

1.安装

通过NeGet安装SDK,安装后VS2019的winform工具箱中是没有自动出现控件的,(也有幸运的,安装完就有了)

安装完后手动添加控件

点击工具箱空白处鼠标右击,点击选择项

点击浏览找到你上面NeGet安装的Microsoft Edge WebView2 的SDK文件夹,选择红框中的 dll 点击确定就添加上了

添加成功后如下图就可以使用了

2.使用

和平常控件一样拖动使用,设置上你的 url 就可以了

注意:
如果你的 url 通过代码设置,WebView2控件一定不要在设计器里拖动添加,必须去代码里添加WebView2实例化,否则会报错说你还没有初始化控件就是用。

简单代码:

csharp 复制代码
using Microsoft.Web.WebView2.WinForms;

private WebView2 webView;//Web
public void WebViewInit()
{
   this.webView = new WebView2();
   // 设置 WebView2 的大小和位置
   webView.Location = new Point(50, 70); // 设置初始位置
   webView.Size = new Size(1400, 700);  // 设置初始大小

   // 将控件添加到窗体
   Controls.Add(webView);
   // 在窗体加载时导航到指定的网页
   string url = "http://192.168.1.60/?t=" + DateTime.Now.Ticks;
  // 初始化 WebView2 控件并加载网页
  InitializeWebView2AndLoadPage(url); 
}


private async void InitializeWebView2AndLoadPage(string url)
        {
            // 确保 CoreWebView2 实例已经准备好
            await webView.EnsureCoreWebView2Async();

            // 确保在 WebView2 控件初始化完成后加载网页
            webView.CoreWebView2.Navigate(url);
        }
相关推荐
向宇it37 分钟前
【从零开始入门unity游戏开发之——unity篇02】unity6基础入门——软件下载安装、Unity Hub配置、安装unity编辑器、许可证管理
开发语言·unity·c#·编辑器·游戏引擎
yngsqq1 小时前
一键打断线(根据相交点打断)——CAD c# 二次开发
windows·microsoft·c#
TENET信条2 小时前
day53 第十一章:图论part04
开发语言·c#·图论
anlog3 小时前
C#在自定义事件里传递数据
开发语言·c#·自定义事件
向宇it5 小时前
【从零开始入门unity游戏开发之——unity篇01】unity6基础入门开篇——游戏引擎是什么、主流的游戏引擎、为什么选择Unity
开发语言·unity·c#·游戏引擎
仰望大佬0075 小时前
Avalonia实例实战五:Carousel自动轮播图
数据库·microsoft·c#
糖朝5 小时前
c#读取json
c#·json
向宇it10 小时前
【从零开始入门unity游戏开发之——C#篇26】C#面向对象动态多态——接口(Interface)、接口里氏替换原则、密封方法(`sealed` )
java·开发语言·unity·c#·游戏引擎·里氏替换原则
Java Fans14 小时前
C# 中串口读取问题及解决方案
开发语言·c#
盛派网络小助手14 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#