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中实现依赖注入的思路分享
Jan 15 Javascript
JavaScript对Cookie进行读写操作实例
Jul 25 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
Nov 18 Javascript
JavaScript中的冒泡排序法
Aug 03 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
Dec 23 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
Feb 21 Javascript
@ResponseBody 和 @RequestBody 注解的区别
Mar 08 Javascript
js鼠标跟随运动效果
Mar 11 Javascript
探索webpack模块及webpack3新特性
Sep 18 Javascript
node通过npm写一个cli命令行工具
Oct 12 Javascript
说说如何利用 Node.js 代理解决跨域问题
Apr 22 Javascript
处理JavaScript值为undefined的7个小技巧
Jul 28 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
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
PHP系统流量分析的程序
2006/10/09 PHP
求PHP数组最大值,最小值的代码
2011/10/31 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
javascript hasFocus使用实例
2010/06/29 Javascript
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
浅谈vue 锚点指令v-anchor的使用
2019/11/13 Javascript
Javascript操作select控件代码实例
2020/02/14 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
Python SQLAlchemy入门教程(基本用法)
2019/11/11 Python
Python实现线性插值和三次样条插值的示例代码
2019/11/13 Python
python已协程方式处理任务实现过程
2019/12/27 Python
Pytorch to(device)用法
2020/01/08 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
如何让Java程序执行效率更高
2014/06/25 面试题
国际政治个人自荐信范文
2013/11/26 职场文书
商场拾金不昧表扬信
2014/01/13 职场文书
公司承诺书怎么写
2014/05/24 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
golang switch语句的灵活写法介绍
2021/05/06 Golang
详解flex:1什么意思
2022/07/23 HTML / CSS