页面中增加一个按钮和WebBrowser控件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace TextDemo
{
public partial class Form2 : Form
{
//此类必须对 COM 可见,才能从Javascript中调用。
[ComVisible(true)]
public class ScriptManager
{
public ScriptManager()
{
}
//此方法可在JS中调用
/// <summary>
/// 在Winform程序中,通过WebBrowser控件可以让Javascript 和 C#进行交互。要让JS调用C#方法,需要在类上设置ComVisible,然后还要设置WebBrowser的ObjectForScripting属性。
/// JS中调用只需使用:window.external.方法名
/// </summary>
/// <param name="message"></param>
public void CallFromJS(string message)
{
MessageBox.Show(message);
}
}
public Form2()
{
InitializeComponent();
webBrowser1.ObjectForScripting = new ScriptManager();
webBrowser1.DocumentText = @"<html>
<head>
<title>Test</title>
<script language='javascript'>
function Test(x){
alert(x);
}
</script>
</head>
<body>
<input type=""button"" value=""点击"" οnclick=""window.external.CallFromJS('TEST');"" />
</body>
</html>";
}
/// <summary>
/// winform窗体中调用Webbrowser控件里的JS方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
string[] args = new string[1];
args[0] = "test";
//Test为JS里带参数的方法
webBrowser1.Document.InvokeScript("Test", args);
//webBrowser1.Document.InvokeScript("Test1"); //没有参数的方法
}
}
}