C#通过html调用WinForm的方法
发布时间:2020-12-15 06:40:33 所属栏目:百科 来源:网络整理
导读:本篇章节讲解C#通过html调用WinForm的方法。供大家参考研究具体如下: 完整测试代码: Form1.cs: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using
本篇章节讲解C#通过html调用WinForm的方法。分享给大家供大家参考,具体如下: 完整测试代码: Form1.cs: 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: [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(); } } 网页: <!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> 补充: webBrowser1.ObjectForScripting = this; 这句话的意思是webBrowser1的脚本执行的Com绑定的方法是 从Form1 来的,而MyMessageBox1和ShowForm却是在WinOperationClass类里面的,肯定是不行的。 第一个可以是因为form1里面有MyMessageBox这个方法,你吧MyMessageBox1和ShowForm移动到form1中或者把MyMessageBox移动到WinOperationClass里面,再把 webBrowser1.ObjectForScripting = this; 这句改成 WinOperationClass w=new WinOperationClass(); webBrowser1.ObjectForScripting = w; 就可以了 推荐第二种……把所有的 Com可见的方法放在一个类里面好维护 更多关于C#相关内容感兴趣的读者可查看本站专题:《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#常见控件用法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》 希望本文所述对大家C#程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |