Advertisement

WinForm中使用WebView2进行JS和C#交互示例

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:RAR


简介:
本文介绍了如何在WinForm应用程序中集成WebView2控件,并通过它实现JavaScript与C#代码之间的数据交互。提供了一个详细的示例来展示具体操作步骤和方法。 在.NET Framework或.NET Core的Windows Forms(WinForm)应用程序中经常需要集成Web视图以展示网页内容,并且可能还需要与其中的JavaScript代码进行交互。微软提供了WebView2控件,它是基于Chromium内核的新一代Web视图工具,使得在WinForm应用中实现现代Web技术集成变得更加容易。 本示例展示了如何使用C#中的WebView2控件来实现在Windows Forms应用程序中JavaScript和C#之间的双向通信。“WinForm下WebView2实现JS与C#交互Demo”提供了详细的步骤说明。 首先确保安装了Microsoft Edge WebView2 SDK。可以通过NuGet包管理器安装`Microsoft.WebView2.WinForms`包,然后在项目中引入`Microsoft.WebView2.WinForms`命名空间以使用WebView2控件。 接着,在WinForm设计器中添加一个WebView2控件到窗体上,并在其代码文件中初始化它: ```csharp private Microsoft.WebView2.WinForms.WebView2 webView2; private async void Form1_Load(object sender, EventArgs e) { webView2 = new Microsoft.WebView2.WinForms.WebView2(); webView2.Dock = DockStyle.Fill; Controls.Add(webView2); 设置初始URL webView2.Source = new Uri(https://example.com); 加载完成事件 webView2.CoreWebView2InitializationCompleted += (sender, args) => { 设置用户数据目录 webView2.CoreWebView2.Environment = await Microsoft.WebView2.Core.CoreWebView2Environment.CreateAsync(null, null); }; } ``` 接下来,实现JavaScript和C#之间的交互。通过`AddScriptToExecuteOnDocumentCreated`方法可以在网页加载时执行一段JavaScript代码,这段代码可以注册一个全局函数来调用C#中的相应方法: ```csharp private void RegisterJsCallCSharp() { webView2.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync( window.callCSharp = function(param) { window.chrome.webview.postMessage(param); }); } ``` 这里定义了一个`callCSharp`函数,用于从JavaScript中调用C#方法并传递参数。 为了接收来自JavaScript的postMessage消息,我们需要监听`WebMessageReceived`事件,并在该事件处理程序中解析接收到的消息以执行相应的操作: ```csharp private async void WebView2_CoreWebView2WebMessageReceived(object sender, Microsoft.WebView2.Core.CoreWebView2WebMessageReceivedEventArgs e) { string message = e.Message.ToString(); await webView2.CoreWebView2.ExecuteScriptAsync($console.log(C# received: {message});); 调用C#方法处理接收到的消息 ProcessMessage(message); } ``` 同时,从C#调用JavaScript代码也很简单。可以使用`ExecuteScriptAsync`方法执行任意的JavaScript代码: ```csharp private async void CallJsFunctionFromCSharp(string functionName, params object[] args) { StringBuilder script = new StringBuilder(); script.Append(functionName); script.Append((); for (int i = 0; i < args.Length; i++) { if (i > 0) script.Append(,); script.Append(JsonConvert.SerializeObject(args[i])); } script.Append();); await webView2.CoreWebView2.ExecuteScriptAsync(script.ToString()); } ``` 这个`CallJsFunctionFromCSharp`方法可以接受一个函数名及任意数量的参数,将其序列化为JSON字符串并拼接成JavaScript调用语句。 通过上述步骤,在WinForm应用中实现了WebView2控件的集成,并且允许JavaScript和C#之间进行双向通信。这对于需要在桌面应用程序与网页间交互的应用场景非常有用,例如从网页触发桌面功能或者更新页面内容等操作。“WinForm下WebView2实现JS与C#交互Demo”提供了一个基础模板,可以根据具体需求进一步扩展和调整。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • WinForm使WebView2JSC#
    优质
    本文介绍了如何在WinForm应用程序中集成WebView2控件,并通过它实现JavaScript与C#代码之间的数据交互。提供了一个详细的示例来展示具体操作步骤和方法。 在.NET Framework或.NET Core的Windows Forms(WinForm)应用程序中经常需要集成Web视图以展示网页内容,并且可能还需要与其中的JavaScript代码进行交互。微软提供了WebView2控件,它是基于Chromium内核的新一代Web视图工具,使得在WinForm应用中实现现代Web技术集成变得更加容易。 本示例展示了如何使用C#中的WebView2控件来实现在Windows Forms应用程序中JavaScript和C#之间的双向通信。“WinForm下WebView2实现JS与C#交互Demo”提供了详细的步骤说明。 首先确保安装了Microsoft Edge WebView2 SDK。可以通过NuGet包管理器安装`Microsoft.WebView2.WinForms`包,然后在项目中引入`Microsoft.WebView2.WinForms`命名空间以使用WebView2控件。 接着,在WinForm设计器中添加一个WebView2控件到窗体上,并在其代码文件中初始化它: ```csharp private Microsoft.WebView2.WinForms.WebView2 webView2; private async void Form1_Load(object sender, EventArgs e) { webView2 = new Microsoft.WebView2.WinForms.WebView2(); webView2.Dock = DockStyle.Fill; Controls.Add(webView2); 设置初始URL webView2.Source = new Uri(https://example.com); 加载完成事件 webView2.CoreWebView2InitializationCompleted += (sender, args) => { 设置用户数据目录 webView2.CoreWebView2.Environment = await Microsoft.WebView2.Core.CoreWebView2Environment.CreateAsync(null, null); }; } ``` 接下来,实现JavaScript和C#之间的交互。通过`AddScriptToExecuteOnDocumentCreated`方法可以在网页加载时执行一段JavaScript代码,这段代码可以注册一个全局函数来调用C#中的相应方法: ```csharp private void RegisterJsCallCSharp() { webView2.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync( window.callCSharp = function(param) { window.chrome.webview.postMessage(param); }); } ``` 这里定义了一个`callCSharp`函数,用于从JavaScript中调用C#方法并传递参数。 为了接收来自JavaScript的postMessage消息,我们需要监听`WebMessageReceived`事件,并在该事件处理程序中解析接收到的消息以执行相应的操作: ```csharp private async void WebView2_CoreWebView2WebMessageReceived(object sender, Microsoft.WebView2.Core.CoreWebView2WebMessageReceivedEventArgs e) { string message = e.Message.ToString(); await webView2.CoreWebView2.ExecuteScriptAsync($console.log(C# received: {message});); 调用C#方法处理接收到的消息 ProcessMessage(message); } ``` 同时,从C#调用JavaScript代码也很简单。可以使用`ExecuteScriptAsync`方法执行任意的JavaScript代码: ```csharp private async void CallJsFunctionFromCSharp(string functionName, params object[] args) { StringBuilder script = new StringBuilder(); script.Append(functionName); script.Append((); for (int i = 0; i < args.Length; i++) { if (i > 0) script.Append(,); script.Append(JsonConvert.SerializeObject(args[i])); } script.Append();); await webView2.CoreWebView2.ExecuteScriptAsync(script.ToString()); } ``` 这个`CallJsFunctionFromCSharp`方法可以接受一个函数名及任意数量的参数,将其序列化为JSON字符串并拼接成JavaScript调用语句。 通过上述步骤,在WinForm应用中实现了WebView2控件的集成,并且允许JavaScript和C#之间进行双向通信。这对于需要在桌面应用程序与网页间交互的应用场景非常有用,例如从网页触发桌面功能或者更新页面内容等操作。“WinForm下WebView2实现JS与C#交互Demo”提供了一个基础模板,可以根据具体需求进一步扩展和调整。
  • WinForm GeckoFx33 JSC#及窗口间调
    优质
    本示例展示了在WinForm应用中使用GeckoFX33实现JavaScript与C#代码之间的交互方法以及不同窗口间的通信技巧。 WinForm GeckoFx33 示例展示了如何在 JS 和 C# 之间进行交互以及实现窗口浏览器之间的相互调用。
  • C# Winform使GMap离线地图开发
    优质
    本示例详细介绍在C# Winform应用程序中集成并利用GMap.NET控件实现离线地图功能的方法和步骤。通过此教程,开发者能够轻松地将高质量的地图显示与交互能力添加到桌面应用中。 C# Winform开发使用离线地图GMap的基础例程包括导入离线地图、绘制地图图层上的标点、多边形、圆以及图片,并且能够通过鼠标移动显示坐标经纬度等功能。
  • C# WinForm 使 WebSocket 文件传输的
    优质
    本示例展示如何在C# WinForm应用程序中利用WebSocket技术实现文件传输功能,包含客户端与服务端通信的基本流程及代码演示。 C# WinForm 通过WebSocket 实现文件传输示例,包含了客户端和服务端的实现方法。
  • Xilium.CefGlue JSC#
    优质
    本项目提供使用Xilium.CefGlue实现JS与C#互相调用的实例代码,适用于开发需要前端JavaScript与后端C#交互的应用程序。 Xilium.Cefglue JS与C#相互调用Demo提供了详细的代码示例和注释,帮助开发者理解如何在JavaScript和C#之间进行通信。通过这个演示项目,用户可以学习到如何将前端的灵活性与后端的强大功能相结合,从而构建更加复杂的应用程序。文档中详细解释了每一步的操作逻辑以及重要的API调用细节,使得即使是初学者也能轻松上手并深入理解Xilium.Cefglue的功能和使用方法。
  • C# Winform 使 IrisSkin4 的
    优质
    本示例展示如何在C# Winform应用程序中集成和使用IrisSkin4皮肤库,实现界面美化与个性化设置。 C# Winform IrisSkin4 使用例子包括 dll 和 73 套皮肤 ssk 文件。
  • 使VC调HTML页面
    优质
    本教程详解如何利用Visual C++平台嵌入并操作HTML文档,涵盖创建、显示及与网页元素互动的关键技术。 这个例子展示了如何使用VC调用HTML页面,并实现页面元素与C++元素之间的互动。
  • thinkPHP5框架使ajax后台数据的简易
    优质
    本文提供了一个基于ThinkPHP5框架采用Ajax技术实现前端与后端数据交互的简单实例,帮助开发者快速掌握其实现方法和应用场景。 本段落主要介绍了TP5(thinkPHP5)框架如何通过Ajax与后台进行数据交互操作,并结合实例详细讲解了在thinkPHP5前端使用jQuery的Ajax提交数据以及后台接收、处理相关数据的操作技巧,供需要的朋友参考。
  • C# Winform使Sockets发送接收JSON
    优质
    本教程详细介绍了在C# Winform应用程序中如何利用Socket编程技术来实现客户端与服务器之间的JSON数据传输。通过具体代码示例,帮助开发者掌握网络通信基础及JSON处理技巧。 博客介绍了如何在C# Winform应用程序中实现JSON与对象之间的转换,并使用Socket进行JSON数据传输的技术细节。
  • 使PythonBokeh式Web绘图
    优质
    本教程教授如何利用Python语言结合Bokeh库创建动态、交互式的网页图表,适合数据可视化爱好者和技术开发者学习。 Bokeh 是一个用于 Python 的交互式 Web 绘图库,它可以帮助您快速、轻松地创建交互式的平面图、仪表盘和数据应用程序。