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 22 Javascript
合并table相同单元格的jquery插件分享(很精简)
Jun 20 Javascript
js操作textarea 常用方法总结
Dec 03 Javascript
javascript简单实现命名空间效果
Mar 06 Javascript
js对象的复制继承实例
Jan 10 Javascript
AngularJS实现全选反选功能
Dec 08 Javascript
jQuery formValidator表单验证
Jan 07 Javascript
使用Promise解决多层异步调用的简单学习心得
May 17 Javascript
详解如何使用Vue2做服务端渲染
Mar 29 Javascript
angular 基于ng-messages的表单验证实例
May 04 Javascript
element el-input directive数字进行控制
Oct 11 Javascript
JavaScript数据结构之栈实例用法
Jan 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的ASP防火墙
2006/10/09 PHP
php获取地址栏信息的代码
2008/10/08 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
php实现的用户查询类实例
2015/06/18 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
nodejs实用示例 缩址还原
2010/12/28 NodeJs
jQuery EasyUI API 中文文档 - Form表单
2011/10/06 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
Python httplib,smtplib使用方法
2008/09/06 Python
使用Python抓取模板之家的CSS模板
2015/03/16 Python
在Python中用split()方法分割字符串的使用介绍
2015/05/20 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
pycharm配置git(图文教程)
2019/08/16 Python
解决Python3下map函数的显示问题
2019/12/04 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
编写python代码实现简单抽奖器
2020/10/20 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题
Windows和Linux动态库应用异同
2016/04/17 面试题
硕士生找工作求职信
2014/07/05 职场文书
工程承包协议书范本
2014/09/29 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
学校体育节班级口号
2015/12/25 职场文书