程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#通過html調用WinForm的方法

C#通過html調用WinForm的方法

編輯:關於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]; objects[0]="C#訪問Javascript腳本"; 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可見的方法放在一個類裡面好維護

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved