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 getElementsByClassName 和js取地址栏参数
Jan 02 Javascript
JavaScript Timer实现代码
Feb 17 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
Jan 31 Javascript
JavaScript 基础篇之运算符、语句(二)
Apr 07 Javascript
jQuery中:selected选择器用法实例
Jan 04 Javascript
jquery 构造函数在表单提交过程中修改数据
May 25 Javascript
JS实现状态栏跑马灯文字效果代码
Oct 24 Javascript
JS实现的简单表单验证功能完整实例
Oct 14 Javascript
JavaScript适配器模式详解
Oct 19 Javascript
vue项目实战总结篇
Feb 11 Javascript
JavaScript 下载svg图片为png格式
Jun 21 Javascript
Vue Element plus使用方法梳理
Dec 24 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
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
js new Date()实例测试
2019/10/31 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
利用一个简单的例子窥探CPython内核的运行机制
2015/03/30 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
python如何实现单链表的反转
2020/02/10 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
Linux面试题LINUX系统类
2015/11/25 面试题
师范生教师实习自我鉴定
2013/09/27 职场文书
班组长安全职责
2014/01/05 职场文书
高中军训感言400字
2014/02/24 职场文书
小学三年级学生评语
2014/04/22 职场文书
小学毕业演讲稿
2014/04/25 职场文书
小学生安全责任书
2014/07/25 职场文书
2014年财务工作自我评价
2014/09/23 职场文书
单位授权委托书范本
2014/09/26 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB