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 火狐(firefox)不显示本地图片问题解决
Jul 05 Javascript
JQuery 确定css方框模型(盒模型Box Model)
Jan 22 Javascript
jquery限制输入字数,并提示剩余字数实现代码
Dec 24 Javascript
js 获取input点选按钮的值的方法
Apr 14 Javascript
跟我学习javascript解决异步编程异常方案
Nov 23 Javascript
Highcharts学习之坐标轴
Aug 02 Javascript
微信小程序五星评分效果实现代码
Apr 06 Javascript
详解从新建vue项目到引入组件Element的方法
Aug 29 Javascript
ES6小技巧之代替lodash
Jun 07 Javascript
微信小程序实现图片选择并预览功能
Jul 25 Javascript
Vue3.0数据响应式原理详解
Oct 09 Javascript
vue实现下载文件流完整前后端代码
Nov 17 Vue.js
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
thinkPHP中多维数组的遍历方法
2016/01/09 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
2010/10/22 Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
JS数组array元素的添加和删除方法代码实例
2015/06/01 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
详解webpack babel的配置
2018/01/09 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
Node.js API详解之 tty功能与用法实例分析
2020/04/27 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
python中的reduce内建函数使用方法指南
2014/08/31 Python
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
python实现键盘控制鼠标移动
2020/11/27 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
3种python调用其他脚本的方法
2020/01/06 Python
Python连接字符串过程详解
2020/01/06 Python
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
金士达面试非笔试
2012/03/14 面试题
项目开发计划书
2014/01/09 职场文书
“学雷锋活动月”总结
2014/03/09 职场文书
一分钟演讲稿
2014/04/30 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
绿里奇迹观后感
2015/06/15 职场文书
SQL实现LeetCode(175.联合两表)
2021/08/04 MySQL
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS