码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • WinFrom、C# 学习记录四 WebView2使用记录


    一、问题描述

            之前在百度地图切片的winform应用内使用webbrowser控件加载地图,因为webbrowser控件使用的是ie内核,好几个朋友都私信或者留言说遇到一些页面无法加载或一直加载中的问题。

            然后这两天空闲的时候,考虑更换一个控件,类似的控件还有不少,收费的、免费的倒是不少,翻了翻,选择使用webview2替代原webbrowser控件。

    二、WebView2概述

            Microsoft Edge WebView2 控件允许在本机应用中嵌入 web 技术(HTML、CSS 以及 JavaScript)。 WebView2 控件使用 Microsoft Edge 作为绘制引擎,以在本机应用中显示 web 内容。

           看到网络上有讨论使用可以WebView2替代Electron,不过看目前的微软官方的WebView2 路线图,UWP 预览版/MacOS 预览版/Xbox 预览版/HoloLens 预览版/Linux 预览版都在计划中,那就是说目前还无法跨平台。

            虽说无法跨平台,但是在windows应用下做为原浏览器控件替代品还是不错的。

    三、使用简述

    1、安装webview2

            打开NuGet,搜索WebView2,当时更新时间2022/8/8。

     2、再winform窗体内使用

            安装之后,可以看到左侧就有了webview2控件,可以直接拖到窗体内。

    3、加载网页

            指定Source,进行网页加载。

    this.webView21.Source = new Uri(Application.StartupPath + "\\html\\在线地图.html");

    4、AddHostObjectToScript方法

            首先绑定初始化完成事件,然后在事件内将提供的主机对象添加到在具有指定名称的 WebView中运行的脚本,其实我这里就是把form对象传递出去,供html内的js调用winform的方法。

    1. this.webView21.CoreWebView2InitializationCompleted += new EventHandler(this.WebView2InitializationCompleted);
    2. private void WebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e)
    3. {
    4. this.webView21.CoreWebView2.AddHostObjectToScript("customHost", this);
    5. }

    5、winform调用js的方法

    1. //webView调用js的方法示例1
    2. string data = JsonConvert.SerializeObject(coordinate);
    3. this.webView21.CoreWebView2.ExecuteScriptAsync($"calcLatLng({data})");
    4. //webView调用js的方法示例2
    5. this.webView21.CoreWebView2.ExecuteScriptAsync($"removeOverlay()");
    6. //原webbrowser控件调用js的方法
    7. //this.webView21.Document.InvokeScript("calcLatLng", new object[] { coordinate });

    6、js调用winform的方法

            对应AddHostObjectToScript方法。

    1. //获取主机对象
    2. var hostObject = window.chrome.webview.hostObjects.customHost;
    3. //调用winform的方法
    4. hostObject.currentTile($(this).attr("src"));

    四、微软官方文档

    Microsoft Edge WebView2 简介 - Microsoft Edge Development | Microsoft Docs使用 Microsoft Edge WebView2 控件在 Win32、.NET 以及 UWP 应用中托管 web 内容。icon-default.png?t=M7J4https://docs.microsoft.com/zh-cn/microsoft-edge/webview2/

  • 相关阅读:
    用python读取各种数据格式(全代码)
    java-net-php-python-45ssm校园小商品二手交易系统计算机毕业设计程序
    vue3+vite+nodejs,通过接口的形式请求后端打包(可打包全部或指定打包组件)
    皮革行业经销商在线系统:简化采购审批流程,轻松管控代理商
    mysql行锁,表锁,间隙锁
    2022派卧底去阿里、京东、美团、滴滴带回来的面试题及答案
    【ASM】字节码操作 工具类与常用类 LocalVariablesSorter 类 简单介绍与使用
    spark 读取本地文件
    SpringMVC执行流程
    U2-Net 使用嵌套 U 结构进行更深入的显着目标检测
  • 原文地址:https://blog.csdn.net/bashendixie5/article/details/126432821
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号