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 获取url参数和script标签中获取url参数函数代码
Jan 22 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
Nov 19 Javascript
jquery ajax属性async(同步异步)示例
Nov 05 Javascript
PHP开发者必须掌握的6个关键字
Apr 14 Javascript
javascript trim函数在IE下不能用的解决方法
Sep 12 Javascript
node.js实现爬虫教程
Aug 25 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
Dec 14 Javascript
详解React 16 中的异常处理
Jul 28 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
Apr 23 Javascript
JavaScript变量基本使用方法实例分析
Nov 15 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
Mar 26 Javascript
Vue初始化中的选项合并之initInternalComponent详解
Jun 11 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
一个查看session内容的函数
2006/10/09 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
2013/06/24 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
php自定义时间转换函数示例
2016/12/07 PHP
多广告投放代码 推荐
2006/11/13 Javascript
this[] 指的是什么内容 讨论
2007/03/24 Javascript
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
Three.js基础部分学习
2017/01/08 Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
2017/07/31 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
详解angularjs实现echart图表效果最简洁教程
2017/11/29 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
Python编码时应该注意的几个情况
2013/03/04 Python
Python中的tuple元组详细介绍
2015/02/02 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
2019/09/17 Python
实习生自荐信范文
2013/11/13 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
学习焦裕禄观后感
2015/06/09 职场文书
2016党校培训心得体会
2016/01/07 职场文书
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记