JavaScript与C# Windows应用程序交互方法

2016-02-19 09:29 22 1 收藏

下面是个简单易学的JavaScript与C# Windows应用程序交互方法教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - Web开发 】

一、建立网页


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

来源:https://www.tulaoshi.com/n/20160219/1590980.html

延伸阅读
本文主要介绍用C# Builder通过ODBC访问数据。并将数据导出到Excel,下面以C# Builder Enterprise+Microsoft Access 2000+Microsoft Excel 2000为例。 1.建立数据库mydb,内建表:联系人 联系人ID 名字 姓氏 地址 城市 省份 [ 相关贴图 ] 2.建立ODBC(mydb) 3.编写程序 点击菜单 Fil...
    C++ Builder提供了所有开始设计应用程序所必需的工具: · 一个称为“窗体”的空白窗口,作为用于设计应用程序的用户界面。 · 一个包容许多可重用的对象的扩展的类库。 · 一个对象观察器,用于检查和改变对象的特性。 · 用于直接访问基本程序逻辑的源代码编辑器。 ·一个可以治理多个工程...
VS.net本身并不提供智能设备(如PDA)应用程序的柱形图,开发智能设备应用程序时VS.net并不象Window应用程序那样提供用户自定义控件。在本文中,您将创建一个以柱形图显示的 PDAChartControl自定义控件。还将创建一个使用此 PDAChartControl自定义控件的智能设备应用程序。为了完成开发工作,您将执行这些过程: 创建该 PDAChartContro...
简介: 框架是一种定制的通用的应用程序开发基础软件,在其基础上可以开发完整的关且功能完善的软件。在最近几年里,已经成功实现了某些应用领域的开发框架,比如说用户介面开发及数据访问开发等。如果能成功的开发出一个框架,这将是一个突破,因为这意味着开发将不再从头开始实现某个功能:比如一个框架如果可以成功的生成一个用户介...
只要你的程序中Main入口是如下的,则你的程序在运行时,在一个时刻只能有一个程序实例,比如Winamp就是这种,当它在运行时,再又击这个程序,是不会再运行一个实例的. 代码很简单 [STAThread] static void Main(string[] args) { bool isExist; System.Threading.Mutex mutex=new System.Threading.Mutex(true,"myApp",out isExist)...

经验教程

684

收藏

96
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部