JavaScript与C# Windows应用程序交互方法

 更新时间:2007年06月29日 00:00:00   作者:  
一、建立网页


<html>
<head>
      <meta http-equiv="Content-Language" content="zh-cn">
      <script language="javascript" type="text/javascript">
             <!-- 提供给C#程序调用的方法 -->
             function messageBox(message)
             {
                   alert(message);
            }
      </script>
</head>

<body>
      <!-- 调用C#方法 -->
      <button onclick="window.external.MyMessageBox('javascript访问C#代码')" >
      javascript访问C#代码</button>
</body>
</html>


二、建立Windows应用程序

1.       创建Windows应用程序项目

2.       在Form1窗体中添加WebBrowser控件

3.       在Form1类的上方添加

[System.Runtime.InteropServices.ComVisibleAttribute(true)]

这是为了将该类设置为com可访问。如果不进行该声明将会出错。出错信息如下图所示:



如:

[System.Runtime.InteropServices.ComVisibleAttribute(true)]

public partial class Form1 : Form



4.初始化WebBrowser的Url与ObjectForScripting两个属性。

Url属性:WebBrowser控件显示的网页路径

ObjectForScripting属性:该对象可由显示在WebBrowser控件中的网页所包含的脚本代码访问。

将Url属性设置为需要进行操作的页的URL路径。

JavaScript通过window.external调用C#公开的方法。即由ObjectForScripting属性设置的类的实例中所包含的公共方法。具体设置例子如下:

System.IO.FileInfo file = new System.IO.FileInfo("index.htm");

// WebBrowser控件显示的网页路径

webBrowser1.Url = new Uri(file.FullName);

// 将当前类设置为可由脚本访问

webBrowser1.ObjectForScripting = this;



5.C#调用JavaScript方法

通过WebBrowser类的Document属性中的InvokeScript方法调用当前网页的Javascript方法。如:

// 调用JavaScript的messageBox方法,并传入参数

object[] objects = new object[1];

objects[0] = "C#访问JavaScript脚本";

webBrowser1.Document.InvokeScript("messageBox", objects);



完整代码如下:


[System.Runtime.InteropServices.ComVisibleAttribute(true)]

public partial class Form1 : Form

{

   public Form1()

   {

       InitializeComponent();

       System.IO.FileInfo file = new System.IO.FileInfo("index.htm");

       // WebBrowser控件显示的网页路径

       webBrowser1.Url = new Uri(file.FullName);

       // 将当前类设置为可由脚本访问

       webBrowser1.ObjectForScripting = this;

   }



   private void button1_Click(object sender, EventArgs e)

    {

       // 调用JavaScript的messageBox方法,并传入参数

       object[] objects = new object[1];

       objects[0] = "C#访问JavaScript脚本";

       webBrowser1.Document.InvokeScript("messageBox", objects);

   }

   // 提供给JavaScript调用的方法

   public void MyMessageBox(string message)

   {

       MessageBox.Show(message);
   }
}



Dnew.cn 注:原文:http://www.cnblogs.com/xds/archive/2007/03/02/661838.html

相关文章

  • JS实现六位字符密码输入器功能

    JS实现六位字符密码输入器功能

    这篇文章主要介绍了JS实现六位字符密码输入器功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • js特效,页面下雪的小例子

    js特效,页面下雪的小例子

    js特效,页面下雪的小例子,需要的朋友可以参考一下
    2013-06-06
  • js控制fieldset高度的代码

    js控制fieldset高度的代码

    js控制fieldset高度的代码...
    2007-11-11
  • node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能

    node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能

    这篇文章主要介绍了node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 元素未显示设置width/height时IE中使用currentStyle获取为auto

    元素未显示设置width/height时IE中使用currentStyle获取为auto

    元素未显示设置width/height时IE中无法使用currentStyle获取,默认获取值为auto,需要的朋友可以参考下
    2014-05-05
  • 微信小程序实现活动报名登记功能(实例代码)

    微信小程序实现活动报名登记功能(实例代码)

    这篇文章主要介绍了微信小程序实现活动报名登记,本篇将介绍使用微信小程序实现发起一个活动报名的设计,以此为基础,我们可以掌握微信小程序表单的基本用法,进而在诸如疫情信息登记、出入报备等场景中使用小程序进行开发,满足相关的需求,需要的朋友可以参考下
    2022-09-09
  • ES6 Promise对象的应用实例分析

    ES6 Promise对象的应用实例分析

    这篇文章主要介绍了ES6 Promise对象的应用,结合实例形式分析了Promise对象原理与异步处理相关操作技巧,需要的朋友可以参考下
    2019-06-06
  • 基于JS实现前端压缩上传图片的实例代码

    基于JS实现前端压缩上传图片的实例代码

    这篇文章主要介绍了基于JS实现前端压缩上传图片的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05
  • JS如何寻找数组中心索引过程解析

    JS如何寻找数组中心索引过程解析

    这篇文章主要介绍了JS如何寻找数组中心索引过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • javascript执行上下文详解

    javascript执行上下文详解

    执行上下文可以说是js代码执行的一个环境,存放了代码执行所需的变量,变量查找的作用域链规则以及this指向等。同时,它也是js很底层的东西,很多的问题如变量提升、作用域链和闭包等都可以在执行上下文中找到答案,所以这也是我们学习执行上下文的原因
    2023-05-05

最新评论