博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# winForm webBrowser页面中js调用winForm类方法(转)
阅读量:7095 次
发布时间:2019-06-28

本文共 2529 字,大约阅读时间需要 8 分钟。

 

有时我们在winform项目中嵌入了网页,想通过html页面调用后台方法,如何实现呢?其实很简单,主要有三部:

 

1、在被调用方法类上加上[ComVisible(true)]标签,意思就是当前类可以com组件的形式供外包调用

2、在webBrowser控件中设置可被html页面调用的类即:webBrowser1.ObjectForScripting = this;前端即可通过window.external访问this对象

3html页面调用后台方法:window.external.方法名(); 此处的window.external相当于webBrowser1.ObjectForScripting

 

一、后台代码:

[csharp]

  1. namespace jsInWebBrowserCallCSharpMethod  
  2. {  
  3.     [ComVisible(true)] //1、必须设置且为true,否则设置webBrowser1.ObjectForScripting对象时会报错  
  4.     public partial class Form1 : Form  
  5.     {  
  6.         public Form1()  
  7.         {  
  8.             InitializeComponent();  
  9.             webBrowser1.Url = new Uri(Application.StartupPath + "\\htmls\\test.html");  
  10.             webBrowser1.ObjectForScripting = this;//2、设置jswindow.external对象代表的类  
  11.         }  
  12.         /// <summary>  
  13.         /// webBrowser页面中js调用的方法  
  14.         /// </summary>  
  15.         /// <param name="mess"></param>  
  16.         public void ShowMessage(string mess)  
  17.         {  
  18.             MessageBox.Show(mess);  
  19.         }  
  20.   
  21.     }  
  22. }  

namespace jsInWebBrowserCallCSharpMethod

{

[ComVisible(true)] //1、必须设置且为true,否则设置webBrowser1.ObjectForScripting对象时会报错

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

webBrowser1.Url = new Uri(Application.StartupPath + "\\htmls\\test.html");

webBrowser1.ObjectForScripting = this;//2、设置jswindow.external对象代表的类

}

/// <summary>

/// webBrowser页面中js调用的方法

/// </summary>

/// <param name="mess"></param>

public void ShowMessage(string mess)

{

MessageBox.Show(mess);

}

 

}

}

 

二、前端test.html代码:

[csharp]

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4.     <title>测试调用winform后台方法页面</title>  
  5.       
  6.     <script type="text/javascript">  
  7.           
  8.        window.οnlοad=function(){  
  9.   
  10. var btn=document.getElementById('btnCallCSharpMethod');  
  11. btn.οnclick=function(){  
  12.   
  13. window.external.ShowMessage('成功调用winform类中的方法!');//3、此处window.external相当于winform中设置的webBrowser.ObjectForScripting对象  
  14.   
  15. }  
  16.   
  17. }  
  18.     </script>  
  19.   
  20. </head>  
  21. <body style='text-align:center;'>  
  22.    <input type='button' id='btnCallCSharpMethod' value='调用winform类中的方法' />  
  23. </body>  
  24. </html>  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>测试调用winform后台方法页面</title>

 

<script type="text/javascript">

 

window.οnlοad=function(){

 

var btn=document.getElementById('btnCallCSharpMethod');

btn.οnclick=function(){

 

window.external.ShowMessage('成功调用winform类中的方法!');//3、此处window.external相当于winform中设置的webBrowser.ObjectForScripting对象

 

}

 

}

</script>

 

</head>

<body style='text-align:center;'>

<input type='button' id='btnCallCSharpMethod' value='调用winform类中的方法' />

</body>

</html>

 

按照上面1,2,3点操作,就能实现html页面调用winform 后台方法了。源码下载。

 

来自:

转载于:https://www.cnblogs.com/time-is-life/p/7479061.html

你可能感兴趣的文章
redis crackit安全事件分析
查看>>
PHP 5.6 已结束安全支持,你升级到 PHP 7 系列了吗?
查看>>
移动开发规范概述
查看>>
阿里最全面试116题:阿里天猫、蚂蚁金服、阿里巴巴面试题含答案 ...
查看>>
实时欺诈检测(风控)
查看>>
常用JQUERY插件大全
查看>>
PostgreSQL Oracle 兼容性之 - DBMS_OUTPUT.PUT_LINE
查看>>
1月15日云栖精选夜读 | 重磅公开!阿里语音识别模型端核心技术,让你“听”见未来 ...
查看>>
天文学家与阿里合作寻找“第二地球”,39光年外或有生命条件 ...
查看>>
自然语言处理hanlp的入门基础
查看>>
什么是大数据?如何成为大数据工程师?
查看>>
Spring Security OAuth 个性化token
查看>>
妙回春堂完成首轮融资,投资方主体为华园科创 ...
查看>>
java开发之使用websocket实现web客户端与服务器之间的实时通讯
查看>>
阿里云Kubernetes容器服务上体验Knative
查看>>
想知道Python的 数据驱动编程框架 Da0tabot 是怎么运行?
查看>>
ASP.NET Core中自定义路由约束
查看>>
全栈看到的技术债务
查看>>
NeurIPS 2018 中的贝叶斯研究
查看>>
Linux虚拟机下安装Oracle 11G教程
查看>>