这篇文章主要介绍了C#通过html调用WinForm的方法,涉及html页面中使用JavaScript访问C#的相关技巧,需要的朋友可以参考下
这篇文章主要介绍了C#通过html调用WinForm的方法,涉及html页面中使用JavaScript访问C#的相关技巧,需要的朋友可以参考下
这篇文章主要介绍了C#通过html调用WinForm的方法,涉及html页面中使用JavaScript访问C#的相关技巧,需要的朋友可以参考下
本文实例讲述了C#通过html调用WinForm的方法。分享给大家供大家参考,具体如下:
完整测试代码:
Form1.cs:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace test{ [System.Runtime.InteropServices.ComVisibleAttribute(true)] public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { System.IO.FileInfo file = new System.IO.FileInfo(Application.StartupPath+@"\test1.htm"); webBrowser1.Url = new Uri(file.FullName); webBrowser1.ObjectForScripting = this; } private void button1_Click(object sender, EventArgs e) { object[] objects = new object[1]; webBrowser1.Document.InvokeScript("messageBox", objects); } public void MyMessageBox(string message) { MessageBox.Show(message); } }} |
类WinOper:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[System.Runtime.InteropServices.ComVisibleAttribute(true)] public class WinOperationClass { public void MyMessageBox1() { MessageBox.Show(message); } public void ShowForm() { Form2 f2 = new Form2(); f2.WindowState = FormWindowState.Normal; f2.Show(); } } |
网页:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html> <head> <title></title> <script language="javascript" type="text/javascript"> function messageBox(message) { alert(message); } </script> </head> <body> <button onclick="window.external.MyMessageBox('javascript访问C#代码')">javascript访问C#代码</button> <a href="javascript:window.external.MyMessageBox1()">javascript访问C#代码</a> <a href="javascript:window.external.ShowForm()">javascript访问C#代码</a> </body></html> |
补充:
|
1
|
webBrowser1.ObjectForScripting = this; |
这句话的意思是webBrowser1的脚本执行的Com绑定的方法是 从Form1 来的,而MyMessageBox1和ShowForm却是在WinOperationClass类里面的,肯定是不行的。
第一个可以是因为form1里面有MyMessageBox这个方法,你吧MyMessageBox1和ShowForm移动到form1中或者把MyMessageBox移动到WinOperationClass里面,再把
|
1
|
webBrowser1.ObjectForScripting = this; |
这句改成
|
1
2
|
WinOperationClass w=new WinOperationClass();webBrowser1.ObjectForScripting = w; |
就可以了
推荐第二种……把所有的 Com可见的方法放在一个类里面好维护
希望本文所述对大家C#程序设计有所帮助。
发表评论