winform调用html,C#通过html调用WinForm的方法

本文实例讲述了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();

}

}

网页:

function messageBox(message)

{

alert(message);

}

javascript访问C#代码

javascript访问C#代码

javascript访问C#代码

补充:

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#程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值