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引导程序
Oct 26 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
Sep 06 Javascript
javascript对数组的常用操作代码 数组方法总汇
Jan 27 Javascript
jquery tab插件精简版分享
Sep 10 Javascript
JS中的数组的sort方法使用示例
Jan 22 Javascript
JavaScript的作用域和块级作用域概念理解
Sep 21 Javascript
React实现双向绑定示例代码
Sep 19 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
Nov 01 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
May 03 Javascript
跟混乱的页面弹窗说再见
Apr 11 Javascript
Vue解决echart在element的tab切换时显示不正确问题
Aug 03 Javascript
vue项目配置同一局域网可使用ip访问的操作
Oct 23 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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
python实现端口转发器的方法
2015/03/13 Python
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
django中静态文件配置static的方法
2018/05/20 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
python里 super类的工作原理详解
2019/06/19 Python
Python之指数与E记法的区别详解
2019/11/21 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
JDK安装目录下有哪些内容
2014/08/25 面试题
公民授权委托书范本
2014/09/17 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
博士导师推荐信
2015/03/25 职场文书
python如何读取.mtx文件
2021/04/22 Python
vue-element-admin项目导入和导出的实现
2021/05/21 Vue.js
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL