[转载]使用WebBrowser的记录 - 无风嗜血 - 博客园

[转载]使用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这个方法,后面是带参数的,这个网上的解释比较多,我建议用第一种,第一种好用。
赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏