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 相关文章推荐
IE和firefox浏览器的event事件兼容性汇总
Dec 06 Javascript
javascript小数计算出现近似值的解决办法
Feb 06 Javascript
javascript 闭包
Sep 15 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
Apr 08 Javascript
jQuery实现自动切换播放的经典滑动门效果
Sep 12 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
Sep 20 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
Apr 10 jQuery
详解win7 cmd执行vue不是内部命令的解决方法
Jul 27 Javascript
解决vue打包之后静态资源图片失效的问题
Feb 21 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
Sep 26 Javascript
vue父组件给子组件的组件传值provide inject的方法
Oct 23 Javascript
Vue前端判断数据对象是否为空的实例
Sep 02 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制作静态网站的模板框架(二)
2006/10/09 PHP
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
jQuery选择器之基本过滤选择器用法实例分析
2019/02/19 jQuery
详解用JS添加和删除class类名
2019/03/25 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
python中的lambda表达式用法详解
2016/06/22 Python
Python类属性的延迟计算
2016/10/22 Python
详解python3百度指数抓取实例
2016/12/12 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
Python谱减法语音降噪实例
2019/12/18 Python
Python while循环使用else语句代码实例
2020/02/07 Python
win10安装python3.6的常见问题
2020/07/01 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
外国语学院毕业生自荐信
2013/10/28 职场文书
采购部部门职责
2013/12/15 职场文书
《中国的气候》教学反思
2014/02/23 职场文书
大学新学期计划书
2014/04/28 职场文书
献爱心标语
2014/06/21 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
先进个人事迹材料
2014/12/29 职场文书
骨干教师个人总结
2015/02/11 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
公司周年庆典致辞
2015/07/30 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
Python编程super应用场景及示例解析
2021/10/05 Python
一文搞懂Java中的注解和反射
2022/06/21 Java/Android