zoukankan      html  css  js  c++  java
  • C# winForm webBrowser页面中js调用winForm类方法(转)

     

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

     

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

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

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

     

    一、后台代码:

    [csharp] view plain copy print?

    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] view plain copy print?

    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.onload=function(){  
    9.   
    10. var btn=document.getElementById('btnCallCSharpMethod');  
    11. btn.onclick=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.onload=function(){

     

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

    btn.onclick=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 后台方法了。源码点击打开链接下载。

     

    来自: http://blog.csdn.net/taoerchun/article/details/49782739

  • 相关阅读:
    centos 7安装libreoffice
    python3-xlwt-Excel设置(字体大小、颜色、对齐方式、换行、合并单元格、边框、背景、下划线、斜体、加粗)
    PHP导出身份证号科学计数法
    PHP接收json格式的POST数据
    微信小程序知识
    搭建Vue开发环境的步骤
    公众号认证?小程序认证?小程序复用公众号资质进行认证?
    七牛云——批量将本地图片上传到七牛云
    身份认证接口
    php二维数组去重
  • 原文地址:https://www.cnblogs.com/time-is-life/p/7479061.html
Copyright © 2011-2022 走看看