四.Winform使用Webview2加载本地HTML页面并互相通信

这篇具有很好参考价值的文章主要介绍了四.Winform使用Webview2加载本地HTML页面并互相通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

往期目录

往期相关文章目录
专栏目录

本节目标

  • 实现刷新按钮
  • 点击 C# winform按钮可以调用C# winform代码显示到html上
  • 点击HTML按钮可以调用C# winform代码更改html按钮字体

核心代码

  • C# -> html
	this.mainView2.ExecuteScriptAsync("调用方(发送消息..)");
  • html->C#
    • 确保mainView2的CoreWebView2异步初始化完成
this.mainView2.EnsureCoreWebView2Async(null);
    • 在webview2的CoreWebView初始化之后设置属性
	//coreWebview2完成时发生。在完成时进行一系列设置。
	this.mainView2.CoreWebView2InitializationCompleted += (object sender, CoreWebView2InitializationCompletedEventArgs e)=>{
    this.mainView2.CoreWebView2.Settings.IsScriptEnabled = true; 
}
    • 在coreWebview2完成时添加WebMessageReceived监听。如下代码。
     this.mainView2.CoreWebView2InitializationCompleted += (object sender, CoreWebView2InitializationCompletedEventArgs e) => {
     this.mainView2.CoreWebView2.Settings.IsScriptEnabled = true;
     this.mainView2.CoreWebView2.WebMessageReceived += CoreWebView2_WebMessageReceived;
 };
    • 实现接受方法
/// <summary>
/// 页面发送消息时,后台接受信息
/// </summary>

private void CoreWebView2_WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e)
{
    // e.WebMessageAsJson.ToString();为获取到的JSON字符串
}

实现HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Demo2TextHTMl</title>
	<script>
	    // 声明一个函数,在winform端 进行调用,并将调用的数值展示到页面上
	    function winformToHtmlText(text){
	        document.querySelector('.test1').innerHTML=text;
	    }
	
	    //当前函数通过html处罚更改Winform界面上的按钮字体
	    function htmlToWinformText() {
	        alert("开始发送");
	        try {
	            chrome.webview.postMessage("创建按钮点击更改winform窗体上的按钮字体");
	            chrome.webview.postMessage({ b: "创建按钮点击更改winform窗体上的按钮字体" });
	        } catch (e) {
	            alert(e.message)
	        }
	    }

	</script>
</head>
<body>
    <div class="test1"></div>

    <div>
        <button onclick="htmlToWinformText()">创建按钮点击更改winform窗体上的按钮字体</button>
    </div>
</body>
</html>

实现的窗体Demo2代码


    public partial class Demo2 : Form
    {
        public Demo2()
        {
            InitializeComponent();
            this.mainView2.EnsureCoreWebView2Async(null);
        }

        /// <summary>
        /// 窗体加载程序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Demo2_Load(object sender, EventArgs e)
        {
            //获取可执行目录地址
            string exePath = Application.StartupPath;

            //拼接计算html页面路径
            string relativePath = "../../HTML/Demo2.html";
            string path = Path.GetFullPath(Path.Combine(exePath, relativePath));

            this.mainView2.Source = new Uri(@"file:///" + path);

            //初始化 coreWebview2完成时发生。在完成时进行一系列设置。
            this.mainView2.CoreWebView2InitializationCompleted += (object sender2, CoreWebView2InitializationCompletedEventArgs e2) => {
                this.mainView2.CoreWebView2.Settings.IsScriptEnabled = true;
                //创建页面发送消息时,后台接受信息事件
                this.mainView2.CoreWebView2.WebMessageReceived += CoreWebView2_WebMessageReceived;
            };
        }

        /// <summary>
        /// html页面发送消息时,后台接受信息
        /// </summary>
        private void CoreWebView2_WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e)
        {
            this.butByHtmlChange.Text = e.WebMessageAsJson.ToString();
        }


        /// <summary>
        /// 调用html函数
        /// </summary>
        private void btnSendToHtml_Click(object sender, EventArgs e)
        {
            string text = "这是一段从窗体发送到HTMl的文字!";
            this.mainView2.ExecuteScriptAsync($"winformToHtmlText('{text}')");
        }  

        /// <summary>
        /// 刷新按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnRefresh_Click(object sender, EventArgs e)
        {
            this.mainView2.Reload();
        }
    }

效果图

  • 从窗体发送到HTMl的文字
    四.Winform使用Webview2加载本地HTML页面并互相通信,WInform-Webview2,html,前端,c#,winform
  • 从HTML 修改窗体按钮文字
    四.Winform使用Webview2加载本地HTML页面并互相通信,WInform-Webview2,html,前端,c#,winform

往期相关文章目录
专栏目录文章来源地址https://www.toymoban.com/news/detail-822010.html

到了这里,关于四.Winform使用Webview2加载本地HTML页面并互相通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一.Winform使用Webview2(Edge浏览器核心) 创建demo(Demo1)实现回车导航到指定地址

    往期相关文章目录 专栏目录 WinForms 应用中的 WebView2 入门 按照官方文档一路操作,可以自行百度或者查看WinForms 应用中的 WebView2 入门。为了避坑,本人安装的时vs2022(visual studio 以下简称vs) 打开vs(visual studio 以下简称vs) 点击 创建新项目 ,选择 C# Windows 窗体应用 (.NET Framework

    2024年02月21日
    浏览(30)
  • 【WinForm】WebView2-个性化浏览器-桌面程序开发详解

    这是一个桌面程序上的浏览器,是用插件WebView2开发的浏览器桌面程序,功能体验堪比Edge浏览器,相比使用Chrome内核插件开发浏览器来说,还是用插件WebView2开发来得简单一些,接下来讲一讲实现过程。 开发之前,建议先看看微软的 WebView2 开发文档,很有帮助 使用Visual Stu

    2024年02月04日
    浏览(27)
  • net中winform教程 浏览器控件,还是微软的WebView2最好用

    如果想在Winform项目中使用浏览器控件,可能想到的第一个控件就是微软自带的WebBrowser,可这个不争气的家伙,从出现到现在,没有一丁点的升级,即使身为Net程序员,也不得不对它竖起了中指。不过,好在微软迷途知返,提供了升级控件,才算摆平。不然让Google的Cef控件抢

    2024年02月11日
    浏览(36)
  • 测试Android webview 加载本地html

    最近开发一个需要未联网功能的App, 不熟悉使用Java原生开发界面,于是想使用本地H5做界面,本文测试了使用本地html加载远程数据。直接上代码: 最终效果:

    2024年02月04日
    浏览(35)
  • QT5 通过 webview2 加载网页

    官方文档参考:https://learn.microsoft.com/zh-cn/microsoft-edge/webview2/get-started/win32 头文件主要为:WebView2和WixLibrary,存储在include/external 库主要为:WebView2LoaderStatic.lib和WebView2Loader.dll,存储在lib/external CMakeLists文件 base/set_env.cmake init_project.cmake base/set_compile_arg.cmake main函数 MainWindow函数

    2024年02月07日
    浏览(34)
  • VBS加载微软网页控件webview2(Edge-Chromium谷歌内核)

    VBS加载微软网页控件webview2(Edge-Chromium谷歌内核) VBA加载Webview2浏览器内核 代替了ie的webbrowser控件,效果类似: 资源:VBS加载webview2控件代替ie的webbrowser(Edge-Chromium谷歌内核)资源-CSDN文库 VBS loads the Microsoft web control webview2 (edge ​​Google kernel)Instead of the webbrowser control of ie, the e

    2024年02月06日
    浏览(29)
  • WPF混合开发之WebView2(二) WebView2的简单使用

    在上一篇文章中,我们介绍了WebView2的环境搭建,点此前往,在这一章节,我们将使用WebView2简单搭建一个WPF程序,在程序中加载百度搜索页面,废话不多说,直接上流程。 建立WPF工程 建立WPF工程步骤很简单,在此不再截图,直接上步骤: 打开Visual Stido 2022(博主使用的是vs

    2024年02月05日
    浏览(58)
  • [C#][]webview2简单使用

    1、本例子需要下载 Microsoft.Web.WebView2  WebView2.Runtime.X64或者​​​​​​WebView2.Runtime.X86 引用库:  webview2运行库这样放置:  代码如下: 上述代码解决了2个常见问题: (1)this.webView21.CoreWebView2的值一直是null,这是没有运行库导致 (2)内部跳转,网上说的没有一个完整,

    2024年02月11日
    浏览(29)
  • WPF中使用WebView2控件

    WebView2 全称 Microsoft Edge WebView2 控件,此控件的作用是在本机桌面应用中嵌入web技术(html,css,javascript),从名字就可以看出来WebView2使用了Edge内核渲染web内容。 通俗来说,WebView2控件是一个UI组件,允许在桌面应用中提供web能力的集成,即俗称的混合开发。 助力程序开发和

    2024年02月03日
    浏览(31)
  • C++ 在Win32中简单使用WebView2

    Microsoft Edge WebView2 控件允许在本机应用中嵌入 web 技术(HTML、CSS 以及 JavaScript)。 WebView2 控件使用 Microsoft Edge 作为绘制引擎,以在本机应用中显示 web 内容。 使用 WebView2 可以在本机应用的不同部分嵌入 Web 代码,或在单个 WebView2 实例中生成所有本机应用。可以去官网查看具体

    2024年02月06日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包