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 相关文章推荐
一个javascript参数的小问题
Mar 02 Javascript
jQuery之$(document).ready()使用介绍
Apr 05 Javascript
这些年、我收集的JQuery代码小结
Aug 01 Javascript
javascript实现捕捉键盘上按下的键
May 05 Javascript
快速掌握Node.js模块封装及使用
Mar 21 Javascript
js HTML5多媒体影音播放
Oct 17 Javascript
详解在Vue中通过自定义指令获取dom元素
Mar 04 Javascript
AngularJS使用ocLazyLoad实现js延迟加载
Jul 05 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
Aug 22 Javascript
WebSocket的简单介绍及应用
May 23 Javascript
vue+element加入签名效果(移动端可用)
Jun 17 Javascript
javascript实现智能手环时间显示
Sep 18 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
基于php验证码函数的使用示例
2013/05/03 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
CSS心形加载的动画源码的实现
2021/03/09 HTML / CSS
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
JQuery优缺点分析说明
2011/04/10 Javascript
JavaScript 布尔操作符解析  &amp;&amp; || !
2012/08/10 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
详解AngularJS中的表单验证(推荐)
2016/11/17 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
vuejs实现递归树型菜单组件
2018/01/13 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
Python3.6笔记之将程序运行结果输出到文件的方法
2018/04/22 Python
TensorFlow实现模型评估
2018/09/07 Python
PyQt5响应回车事件的方法
2019/06/25 Python
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
清洁工表扬信
2014/01/08 职场文书
消防应急演练方案
2014/02/12 职场文书
开学典礼主持词
2014/03/19 职场文书
竞聘书模板
2014/03/31 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
综合测评个人总结
2015/03/03 职场文书
Vue监视数据的原理详解
2022/02/24 Vue.js
asyncio异步编程之Task对象详解
2022/03/13 Python
Mysql中mvcc各场景理解应用
2022/08/05 MySQL