• 在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

  • 相关阅读:
    植物大战僵尸游戏内存地址
    Win7如何取消用户登陆界面
    Adobe PS CS6安装详解
    MVC 支持同名路由,不同命名空间
    Session阻塞 读写锁引发的小问题
    GZipStream 压缩和解压
    IIS 工作原理之非托管代码旅程(一)
    Http协议(一)
    Css学习笔记 (一)
    Linq二 LinqToSql
  • 原文地址:https://www.cnblogs.com/wangwust/p/6565859.html
Copyright © 2020-2023  润新知