C#通过html调用WinForm的方法
本文实例讲述了C#通过html调用WinForm的方法。分享给大家供大家参考,具体如下:
完整测试代码:
Form1.cs:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
namespacetest
{
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
publicpartialclassForm1:Form
{
publicForm1()
{
InitializeComponent();
}
privatevoidForm1_Load(objectsender,EventArgse)
{
System.IO.FileInfofile=newSystem.IO.FileInfo(Application.StartupPath+@"\test1.htm");
webBrowser1.Url=newUri(file.FullName);
webBrowser1.ObjectForScripting=this;
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
object[]objects=newobject[1];
objects[0]="C#访问javascript脚本";
webBrowser1.Document.InvokeScript("messageBox",objects);
}
publicvoidMyMessageBox(stringmessage)
{
MessageBox.Show(message);
}
}
}
类WinOper:
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
publicclassWinOperationClass
{
publicvoidMyMessageBox1()
{
MessageBox.Show(message);
}
publicvoidShowForm()
{
Form2f2=newForm2();
f2.WindowState=FormWindowState.Normal;
f2.Show();
}
}
网页:
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<html>
<head>
<title></title>
<scriptlanguage="javascript"type="text/javascript">
functionmessageBox(message)
{
alert(message);
}
</script>
</head>
<body>
<buttononclick="window.external.MyMessageBox('javascript访问C#代码')">javascript访问C#代码</button>
<ahref="javascript:window.external.MyMessageBox1()">javascript访问C#代码</a>
<ahref="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;
这句改成
WinOperationClassw=newWinOperationClass(); webBrowser1.ObjectForScripting=w;
就可以了
推荐第二种……把所有的Com可见的方法放在一个类里面好维护
更多关于C#相关内容感兴趣的读者可查看本站专题:《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#常见控件用法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》
希望本文所述对大家C#程序设计有所帮助。