zoukankan      html  css  js  c++  java
  • 在WebBrowser控件使用js调用C#方法

    有时我们需要在WebBrowser控件中嵌入了网页,然后通过html页面调用后台方法,如何实现呢?其实很简单,主要有三步:

    1. 在被调用方法所属的类上加上[ComVisible(true)]标签,意思就是当前类可以以com组件的形式供外部调用。
    2. 在WebBrowser控件中设置可被html页面调用的类即:webBrowser1.ObjectForScripting = this前端即可通过window.external访问this对象
    3. html页面调用后台方法:window.external.方法名()。此处的window.external相当于webBrowser1.ObjectForScripting

    示例代码:

    一、后台

    using System;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;
    
    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、设置js中window.external对象代表的类
            }
    
            /// <summary>
            /// 供webBrowser页面中js调用的方法
            /// </summary>
            /// <param name="msg"></param>
    /// <param name="msg2"></param>
    public void ShowMessage(string msg, string msg2) { MessageBox.Show(msg + " " + msg2); } } }

    二、test.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相当于winform中设置的webBrowser.ObjectForScripting对象
                    window.external.ShowMessage('成功调用winform类中的方法!','成功调用winform类中的方法2!');
                }
            }
        </script>
    </head>
    <body style='text-align:center;'>
        <input type='button' id='btnCallCSharpMethod' value='调用winform类中的方法' />
    </body>
    </html>

    三、运行效果

    本文转载自:http://blog.csdn.net/taoerchun/article/details/49782739

  • 相关阅读:
    每日一题:用一个SQL语句交换两条数据某一列的值
    String value(); String[] value(); 比较
    java.sql.SQLException: Unknown system variable 'tx_isolation'
    return; 用法
    Linux和UNIX的关系及区别(详解版)
    404
    Centos 7 修改YUM镜像源地址为阿里云镜像地址
    JVM面试必备
    秒杀优化迭代
    电商秒杀基础构建项目笔记2(优化效验准则和商品模型创建)
  • 原文地址:https://www.cnblogs.com/wangwust/p/6565859.html
Copyright © 2011-2022 走看看