时间:2021-05-20
本文实例讲述了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#程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
不多说,直接上代码,winform下button1调用js函数,从html页面获取值,然后JS调用WINFORM的函数,传送获取到的值到winform并通过me
问题描述:为了在C#中执行js脚本,在一个目标平台编译为AnyCpu的.NET程序集中引用了MSScriptControl组件,在winform程序中,调用这个
本文实例讲述了C#设置WinForm中DataGrid列的方法。分享给大家供大家参考。具体如下:写winForm的程序,难免要用DataGrid,自然也就需要设
本文实例讲述了C#调用执行外部程序的实现方法。分享给大家供大家参考。具体分析如下:这里以调用notepad为例演示C#调用执行外部程序的方法。classTest
Win32的API函数是微软自己的东西,可以直接在C#中直接调用,在做WinForm时还是很有帮助的。有时候我们之直接调用Win32的API,可以很高效的实现想