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


Posted in Javascript onJune 29, 2007

一、建立网页

<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

Javascript 相关文章推荐
网页的标准,IMG不支持onload标签怎么办
Jun 29 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
Jun 11 Javascript
一个报数游戏js版(约瑟夫环问题)
Aug 05 Javascript
jquery 遍历数组 each 方法详解
May 25 Javascript
javascript 小数乘法结果错误的处理方法
Jul 28 Javascript
jQuery基于排序功能实现上移、下移的方法
Nov 26 Javascript
jQuery实现限制文本框的输入长度
Jan 11 Javascript
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
Angular 开发学习之Angular CLI的安装使用
Dec 31 Javascript
微信小程序实现即时通信聊天功能的实例代码
Aug 17 Javascript
electron + vue项目实现打印小票功能及实现代码
Nov 25 Javascript
使用typescript快速开发一个cli的实现示例
Dec 09 Javascript
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
Jun 29 #Javascript
javascript之函数直接量(function(){})()
Jun 29 #Javascript
javascript延时重复执行函数 lLoopRun.js
Jun 29 #Javascript
JavaScript 编程引入命名空间的方法
Jun 29 #Javascript
你需要知道的JavsScript可以做什么?
Jun 29 #Javascript
ECMAScript 基础知识
Jun 29 #Javascript
javascript中的几个运算符
Jun 29 #Javascript
You might like
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
PHP5+UTF8多文件上传类
2008/10/17 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
js判断url是否有效的两种方法
2014/03/04 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
tornado捕获和处理404错误的方法
2014/02/26 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
Python3读取和写入excel表格数据的示例代码
2020/06/09 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
JAVA中运算符的分类及举例
2015/09/12 面试题
授权委托书
2014/07/31 职场文书
安全生产年活动总结
2014/08/29 职场文书
终止劳动合同协议书
2014/10/05 职场文书
出国签证在职证明范本
2014/11/24 职场文书
教学督导岗位职责
2015/04/10 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
深入理解go slice结构
2021/09/15 Golang
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技