当前位置: 首页 > news >正文

WinForm程序嵌入Web网页

文章目录

  • 前言
  • 一、三方库或控件的选择测试
  • 二、Microsoft Edge WebView2安装、使用步骤
    • 1.安装
    • 2.使用


前言

由于此项目需要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实例化,否则会报错说你还没有初始化控件就是用。

简单代码:

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);}
http://www.lryc.cn/news/449670.html

相关文章:

  • Redis string类型hash类型
  • Solidity智能合约中的异常处理(error、require 和 assert)
  • True NAS禁用ipv6
  • 笔记整理—linux进程部分(2)使用fork创建进程
  • 在Python中实现多目标优化问题(6)
  • Java EE中的编码问题及解决方案
  • 9月27日,每日信息差
  • 什么是 Angular 开发中的 Dumb components
  • Docker 进入容器运行命令的详细指南
  • 如何禁止非真实用户的ip访问网站服务器
  • 探索SpringBoot:学科竞赛管理项目开发
  • ultralytics yolo v8 示例:加载官方模型进行推理
  • 【中间件学习】Nginx快速入门(为了配置一个项目)
  • 鸿蒙harmonyos next flutter通信之MethodChannel获取设备信息
  • 【笔记】原子结构的近代理论
  • 【python】循环中断:break 和 continue
  • WIFI密码默认显示
  • Emiya 家今天的饭C++
  • Mybatis缓存机制(图文并茂!)
  • Git 工作区、暂存区和版本库
  • SSH 远程连接到 Linux 服务器上的 SQLite
  • 使用ElasticSearch-dump工具进行ES数据迁移、备份
  • SpringMVC源码-SpringMVC源码请求执行流程及重点方法doDispatch讲解
  • 《深度学习》OpenCV 指纹验证、识别
  • 爬虫入门之爬虫原理以及请求响应
  • CTF ciscn_2019_web_northern_china_day1_web1复现
  • docker命令汇总
  • 云计算在现代企业中的应用与优势
  • Android平台GB28181实时回传流程和技术实现
  • Text-to-SQL方法研究