当前位置:首页 » 《我的小黑屋》 » 正文

C#中WebView2调用与交互实现

14 人参与  2024年11月12日 19:21  分类 : 《我的小黑屋》  评论

点击全文阅读


简要说明:

此控件实际上是 [WebView2 COM API] (https://aka.ms/webview2) 的包装器。
 可以通过访问 Microsoft.Web.WebView2.Wpf.WebView2.CoreWebView2 属性来直接访问基础 ICoreWebView2 接口及其所有功能。
一些最常见的 COM 功能也可以通过控件上的包装器方法/属性/事件直接访问。创建时,控件的 Microsoft.Web.WebView2.Wpf.WebView2.CoreWebView2 属性将为 null。
  这是因为创建 Microsoft.Web.WebView2.Wpf.WebView2.CoreWebView2 是一项成本高昂的操作,涉及启动 Edge 浏览器进程等操作。
  有两种方法可以导致创建

注意:这里使用的是WPF的框架,版本是.NET Framework 4.6

一、效果展示

1、传递数据

2、调用弹窗

3、回传信息

二、实现代码

1、包引用

2、界面添加

3、事件关联与初始化

    private async void RecvMsg_Loaded(object sender, RoutedEventArgs e)    {        InitializeComponent();        await webView.EnsureCoreWebView2Async(null);        webView.Source = new Uri(AppDomain.CurrentDomain.BaseDirectory + "ChartFile\\ContourLineChart.html");        webView.CoreWebView2.WebMessageReceived += WebView_WebMessageReceived;    }    private void WebView_WebMessageReceived(object sender, Microsoft.Web.WebView2.Core.CoreWebView2WebMessageReceivedEventArgs e)    {        Console.WriteLine("WebView_WebMessageReceived:"+e.WebMessageAsJson);     //  var p= JsonConvert.DeserializeObject<Preson>(e.WebMessageAsJson);    }

需要注意,消息接收事件注册需要在控件初始化完成后,不然对象为空,会报错。JavaScript传递参数时,会默认序列化对象,对于传递对象数据时,C#层面接收后可以直接进行反序列化成对象,这样后序操作更加友好。当然怎么设计传递参数和怎么使用,需要使用者结合实际情况进行合理设计。

4、数据传递调用

1)、序列方式数据

   para = "jsUpdateROIData(true,0,33937.536,true,0,33937.536," +       "true,[0.0,0.0,0.0,0.0],true,[0.0,0.0,0.0,0.0]," +       "false,0,0,0,0,false,0,0,0,0,true)";    webView.ExecuteScriptAsync(para);

2)、单个数据方式

 public void ExeCall2(int num1, int num2) {     string para = $"calAdd({num1},{num2})";     webView.Dispatcher.Invoke(Process);     void Process()     {         var r = webView.ExecuteScriptAsync(para);         r.ContinueWith(t =>         {             Console.WriteLine("执行结果2:" + t.Result);         });     } }

5、后台Html文件

1)、数据显示函数

 function jsUpdateROIData(isShowRoi1, dValueRoi1, zValueRoi1, isShowRoi2, dValueRoi2, zValueRoi2,            flagroi1, Param1, flagroi2, Param2,            isShowLine1, Line1x1, Line1y1, Line1x2, Line1y2, isShowLine2, Line2x1, Line2y1, Line2x2, Line2y2, isShowMarkArea) {            option.series[1].data = null;            option.series[2].data = null;            ShowRoi1ResultPoint(isShowRoi1, dValueRoi1, zValueRoi1);            ShowRoi2ResultPoint(isShowRoi2, dValueRoi2, zValueRoi2);            SetROiPoint(flagroi1, Param1, flagroi2, Param2);            ShowRoi1ResultLine(isShowLine1, Line1x1, Line1y1, Line1x2, Line1y2);            ShowRoi2ResultLine(isShowLine2, Line2x1, Line2y1, Line2x2, Line2y2);            ShowMarkArea(isShowMarkArea);        }

2)、交互函数

function calAdd(num1, num2) {            var result = num1 + num2;            alert("传入参数 num1=" + num1 + ",num2=" + num2 + " num1+num2= " + result);            return result;        }

3)、消息发送函数

function SendMessage(msg) {            window.chrome.webview.postMessage(msg);        }


点击全文阅读


本文链接:http://zhangshiyu.com/post/185280.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • [完结]沈淮安陆心玥(又名:暗恋青梅十年我选择放手)新上全
  • 暴雨惊魂夜:+后续(陆舟吴佳)全书免费_(陆舟吴佳)暴雨惊魂夜:+后续后续(陆舟吴佳)
  • 我死遁后,族长悔疯了:结局+番外(我死遁后,族长悔疯了:结局+番外)_我死遁后,族长悔疯了:结局+番外(战痕音音)列表_笔趣阁(战痕音音)
  • 温长生陆扶摇(温长生陆扶摇:结局+番外)完结_温长生陆扶摇列表_笔趣阁(温长生陆扶摇:结局+番外)
  • 梁岁霍司年叶琳完本(又名:似月光吻野风)完本_完本梁岁霍司年叶琳完本(又名:似月光吻野风)
  • 全书免费周宴礼宋知蔓(又名:改嫁闲散王爷后负心将军跪求我原谅)_周宴礼宋知蔓(又名:改嫁闲散王爷后负心将军跪求我原谅)全书免费
  • 天鹅曾坠落(江舒白秦蓁)_天鹅曾坠落(江舒白秦蓁)
  • [爱的莫比乌斯环]精彩节选免费试读_江子安娇娇老公节选免费试读
  • 温长生陆扶摇:结局+完结宝藏_温长生陆扶摇:结局+完结宝藏
  • 好看的温长生陆扶摇:结局+完结宝藏_温长生陆扶摇:结局+完结宝藏
  • 全书免费娘子为师弟夺我秘宝后我灭她满门月婵柳安澜李凤年在线(又名:娘子为师弟夺我秘宝后我灭她满门)_娘子为师弟夺我秘宝后我灭她满门月婵柳安澜李凤年在线(又名:娘子为师弟夺我秘宝后我灭她满门)全书免费
  • 离婚后嫁死对头,冷傲总裁红了眼:+后续列表_离婚后嫁死对头,冷傲总裁红了眼:+后续(姜岁宁顾寒川)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1