使用WebBrowser的记录
第一:新建一个类,用了获取WebBrowser元素的类
//需要引用 Interop.SHDocVw 和 Microsoft.mshtml
public class Element { //根据Name获取元素 public HtmlElement GetElement_Name(WebBrowser wb,string Name) { HtmlElement e = wb.Document.All[Name]; return e; } //根据Id获取元素 public HtmlElement GetElement_Id(WebBrowser wb, string id) { HtmlElement e = wb.Document.GetElementById(id); return e; } //根据Index获取元素 public HtmlElement GetElement_Index(WebBrowser wb,int index) { HtmlElement e = wb.Document.All[index]; return e; } //获取form表单名name,返回表单 public HtmlElement GetElement_Form(WebBrowser wb,string form_name) { HtmlElement e = wb.Document.Forms[form_name]; return e; } public bool CheckExistElement_Form(WebBrowser wb, string form_name) { HtmlElement e = wb.Document.Forms[form_name]; if (e == null) return false; else return true; } //设置元素value属性的值 public void Write_value(HtmlElement e,string value) { e.SetAttribute("value", value); } //执行元素的方法,如:click,submit(需Form表单名)等 public void Btn_click(HtmlElement e,string s) { e.InvokeMember(s); } }
Element el = new Element(); el.Write_value(el.GetElement_Id(IDRWebBrowser, "patient_name"), dt.Rows[0]["Patient_Name"].ToString()); //IDRWebBrowser 浏览器控件 下同 SHDocVw.WebBrowser wb = (SHDocVw.WebBrowser)IDRWebBrowser.ActiveXInstance; IHTMLDocument2 doc2 = (IHTMLDocument2)wb.Document; IHTMLElementCollection input = (IHTMLElementCollection)doc2.all.tags("input");//获取input元素 IHTMLElementCollection select = (IHTMLElementCollection)doc2.all.tags("select");//获取select元素 //性别 input元素 IHTMLElement elementsex = (IHTMLElement)input.item("sex", 0); IHTMLInputElement InputElementsex = (IHTMLInputElement)elementsex; if (dt.Rows[0]["Sex"].ToString() == "男") { InputElementsex.value = "1"; InputElementsex.@checked = true; } else { InputElementsex.value = "2"; InputElementsex.@checked = true; } //select元素 IHTMLElement elementgroup_id = (IHTMLElement)select.item("group_id", 0); IHTMLSelectElement SelectElementgroup_id = (IHTMLSelectElement)elementgroup_id; //SelectElementgroup_id.value = dt.Rows[0]["Profession"].ToString(); SelectElementgroup_id.value = zy.ToString(); IDRWebBrowser.Document.All["group_id"].RaiseEvent("onchange"); //获取Iframe元素 IHTMLDocument2 doc11 = (IHTMLDocument2)IDRWebBrowser.Document.Window.Frames["addriframe"].Document.DomDocument; doc11.url="自己定义它的src";
//如果需要执行元素的事件,比如onchange事件,onclick事件,onblur事件 可以用以下两种方式
WebBrowser执行dom里面的js,以下是两种方式:
1.IDRWebBrowser.Document.All["b_year"].RaiseEvent("onblur");//执行元素name='b_year'的onblur事件,如果是onclick事件改一下就行了
2.IDRWebBrowser.Document.InvokeScript("changeDiseaseid1", new object[] { InputElementselDisease_1 });//执行changeDiseaseid1这个方法,后面是带参数的,这个网上的解释比较多,我建议用第一种,第一种好用。