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 相关文章推荐
Input 特殊事件onpopertychange和oninput
Jun 17 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
Apr 26 Javascript
BootStrap实现树形目录组件代码详解
Jun 21 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
Dec 08 Javascript
Angular2.js实现表单验证详解
Jun 23 Javascript
Vue进度条progressbar组件功能
Apr 17 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
Sep 26 Javascript
js实现json数组分组合并操作示例
Feb 12 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
May 10 Javascript
浅谈vue中组件绑定事件时是否加.native
Nov 09 Javascript
ant design vue中表格指定格式渲染方式
Oct 28 Javascript
原生JS运动实现轮播图
Jan 02 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文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
为超链接加上disabled后的故事
2010/12/10 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
2015/09/24 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
Js跳出两级循环方法代码实例
2020/09/22 Javascript
vue使用require.context实现动态注册路由
2020/12/25 Vue.js
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
基于python 字符编码的理解
2017/09/02 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
使用python turtle画高达
2020/01/19 Python
pandas中ix的使用详细讲解
2020/03/09 Python
django 实现简单的插入视频
2020/04/07 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
连锁经营管理专业大学生求职信
2013/10/30 职场文书
国际商务专业职业生涯规划书范文
2014/01/17 职场文书
党风廉政承诺书
2014/03/27 职场文书
导师就业推荐信范文
2014/05/22 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
个人自查自纠材料
2014/10/14 职场文书
给老师的感谢信
2015/01/20 职场文书
退休欢送会主持词
2015/07/01 职场文书
运动会广播稿200字
2015/08/19 职场文书