We do not always find visible happiness in proportion to visible virtue

梦幻白桦林

SHARE

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  14 Posts :: 58 Stories :: 62 Comments :: 0 Trackbacks

公告

常用链接

留言簿(5)

搜索

  •  

最新随笔

最新评论

阅读排行榜

一、建立网页
 1 <html>
 2 <head>
 3        <meta http-equiv="Content-Language" content="zh-cn">
 4        <script language="javascript" type="text/javascript">
 5               <!-- 提供给C#程序调用的方法 -->
 6              function messageBox(message)
 7              {
 8                     alert(message);
 9              }
10        </script>
11 </head>
12 
13 <body>
14        <!-- 调用C#方法 -->
15        <button onclick="window.external.MyMessageBox('javascript访问C#代码')" >
16        javascript访问C#代码</button>
17 </body>
18 </html>

二、建立Windows应用程序

1.       创建Windows应用程序项目

2.       Form1窗体中添加WebBrowser控件

3.       Form1类的上方添加

[System.Runtime.InteropServices.ComVisibleAttribute(true)]

这是为了将该类设置为com可访问。如果不进行该声明将会出错。出错信息如下图所示:

 

如:

[System.Runtime.InteropServices.ComVisibleAttribute(true)]

publicpartialclassForm1 : Form

 

4.初始化WebBrowserUrlObjectForScripting两个属性。

Url属性:WebBrowser控件显示的网页路径

ObjectForScripting属性:该对象可由显示在WebBrowser控件中的网页所包含的脚本代码访问。

Url属性设置为需要进行操作的页的URL路径。

JavaScript通过window.external调用C#公开的方法。即由ObjectForScripting属性设置的类的实例中所包含的公共方法。具体设置例子如下:

System.IO.FileInfo file = new System.IO.FileInfo("index.htm");

// WebBrowser控件显示的网页路径

webBrowser1.Url = newUri(file.FullName);

// 将当前类设置为可由脚本访问

webBrowser1.ObjectForScripting = this;

 

5C#调用JavaScript方法

通过WebBrowser类的Document属性中的InvokeScript方法调用当前网页的Javascript方法。如:

// 调用JavaScriptmessageBox方法,并传入参数

object[] objects = newobject[1];

objects[0] = "C#访问JavaScript脚本";

webBrowser1.Document.InvokeScript("messageBox", objects);

 

完整代码如下:

 1 [System.Runtime.InteropServices.ComVisibleAttribute(true)]
 2 
 3 public partial class Form1 : Form
 4 
 5 {
 6 
 7     public Form1()
 8 
 9     {
10 
11         InitializeComponent();
12 
13         System.IO.FileInfo file = new System.IO.FileInfo("index.htm");
14 
15         // WebBrowser控件显示的网页路径
16 
17         webBrowser1.Url = new Uri(file.FullName);
18 
19         // 将当前类设置为可由脚本访问
20 
21         webBrowser1.ObjectForScripting = this;
22 
23     }
24 
25  
26 
27     private void button1_Click(object sender, EventArgs e)28 
29     {
30 
31         // 调用JavaScript的messageBox方法,并传入参数
32 
33         object[] objects = new object[1];
34 
35         objects[0= "C#访问JavaScript脚本";
36 
37         webBrowser1.Document.InvokeScript("messageBox", objects);
38 
39     }
40 
41     // 提供给JavaScript调用的方法
42 
43     public void MyMessageBox(string message)44 
45     {
46 
47         MessageBox.Show(message);
48     }
49 }
50 

posted on 2007-03-18 14:06 colys 阅读(2099) 评论(5)  编辑 收藏 引用 所属分类: C#.Net

Feedback

# re: JavaScript与C# Windows应用程序交互 2008-10-05 17:01 2323
TMD
不会就不要写
在网上复制有用么  回复  更多评论
  

# re: JavaScript与C# Windows应用程序交互[未登录] 2008-10-11 15:34 colys
你说的是没错,是在网上复制的,但同时别人也多了一个途径可以看到,并且,内容是真实的,本人当然是用过才会放上去的!  回复  更多评论
  

# re: JavaScript与C# Windows应用程序交互 2009-12-17 20:08 ndaye
@2323
  回复  更多评论
  

# re: JavaScript与C# Windows应用程序交互 2009-12-17 20:10 lkj
虽然人家是复制的,但是我看着很好,也很好用。你唧唧歪歪个屁啊  回复  更多评论
  

# re: JavaScript与C# Windows应用程序交互 2011-04-25 21:57 francis
做程序的,要注意版权..至少也标识一下原链接,尊重别人的劳动成果一下吧。  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理