添加WebBrowser控件
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
private WebBrowser webBrowser1;
引用页面的document对象
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
HtmlDocument doc = webBrowser1.Document;//get web document
有了document对象,就可以像js一样操作doc,访问页面的所有对象。
winForm调用webpage的函数
/*web page function*/
<script>
function jsMethod(var jsParam)
{
alert(param);
}
</script>
/*call jsMethod from winForm*/
private void callJsMethod(string Param)
{
HtmlDocument doc = webBrowser1.Document;
doc.InvokeScript("jsMethod",new object[]{"called by winForm"});
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
webPage调用winForm方法
要调用winform的方法,这两个属性是必须的
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
还有必须设置webBrowser1.ObjectForScripting = this,被调用的方法是public的。
有了上面这些准备要实现一些简单应用就很简单啦,不妨自己动手试试。
实例一
下面结合一个简单例子,使用webbrowser自动登录。
先分析webform的结构,下面这个登录页面包括两个输入框:用户名和密码,以及一个登录按钮。
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<HTML>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<HEAD>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<title>test html</title>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</HEAD>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<body background="/bugnet/graphics/back2.gif">
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<form name="mainform" method="post" action="bugl_login.aspx" id="mainform" >
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<b>Enter name</b><input id="uid" type="text" maxLength="50" size="25" name="uid"><br>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<b>Enter Password</b><input type="password" maxLength="20" size="25" name="pwd">
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<input type="submit" value="go" name="go">
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</form>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</body>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</HTML>
在页面载入webbrowser之后,程序自动填充用户名和密码,触发登陆按钮。
自动登录就这样实现,利用这些可以完成一些重复登录工作,还可以使用来自动化测试webpage程序。
实例二
抓取页面数据,下面的页面有一个表格,如何把里面的数据提取出来?
![](https://images.cnblogs.com/cnblogs_com/agancn/table.JPG)
看看页面DOM结构,一个table,三行两列
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<HTML>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<HEAD>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TITLE> New Document </TITLE>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<META NAME="Generator" CONTENT="EditPlus">
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<META NAME="Author" CONTENT="">
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<META NAME="Keywords" CONTENT="">
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<META NAME="Description" CONTENT="">
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</HEAD>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<BODY>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TABLE border=1>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TR>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TD>name</TD>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TD>age</TD>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TD>score</TD>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</TR>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TR>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TD>agan</TD>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TD>18</TD>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TD>99</TD>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</TR>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TR>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TD>asca</TD>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TD>18</TD>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TD>88</TD>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</TR>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</TABLE>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</BODY>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</HTML>
了解这个表格结构就可以开始导入到winform中的DataTable中,然后在DataGridView中展示出来