none
vb.net 2012中使用WebBrowser访问网页时读取选择项的文本 RRS feed

  • 问题

  • 使用VB.ENT 2012  在一个FORM中面放置了一个WebBrowser访问一个网页,这个网页中有有一个选择项目,网页代码如下:

    <select class="valid" id="spServer"><option value="81">上海电信</option><option value="82">广东电信</option><option value="102">广西电信</option><option value="92">南方电信</option><option value="91">湖南电信</option><option value="85">湖北电信</option><option value="86">浙江电信</option><option value="94">江苏电信</option><option value="87">福建电信</option><option value="101">江西电信</option><option value="88">陕西电信</option><option value="90">四川电信</option><option value="89">重庆电信</option><option value="97">安徽电信</option><option value="98">云南电信</option><option value="93">北方网通</option><option value="84">辽宁网通</option><option value="99">黑龙江网通</option><option value="100">吉林网通</option><option value="83">北京网通</option><option value="96">山东网通</option><option value="103">山西网通</option><option value="170">河南网通</option><option value="171">河北网通</option><option value="540">移动专区</option><option value="660">教育网专区</option></select>  <select class="valid" id="GameQzone" name="GameQzone"><option value="345">河南一区</option><option value="359">河南二区</option></select>

    问题1  当用户选择完的时候,我如何能读取这个选择项目的文本,并不是这个选择项目的value  而文本。因为这个选择项目的值重来不改变,但是他的文本可能经常会变,所以值不重要,选择后的文本更重要。

    问题2 如何获取选择项目的数量,就是知道有多少个选择项目

    谢谢!

    2013年7月8日 15:12

答案

  • 你好,

    请参考以下代码,可以先根据控件ID获取到这个控件,之后对其中包含的htmlelement进行操作:

            Dim getControl As HtmlElement = WebBrowser1.Document.GetElementById("spServer")
            Dim selected As Integer = getControl.GetAttribute("value")
            Dim opCol As HtmlElementCollection = getControl.GetElementsByTagName("option")
            MsgBox("Number of options in control spServer :" & opCol.Count)
            Dim htmlCol As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("option")
            For Each he As HtmlElement In htmlCol
                Dim opName As String = he.GetAttribute("value")
                If opName = selected.ToString Then
                    MsgBox("selected item's text:" & he.InnerText)
                End If
            Next
    Regards,


    Shanks Zen
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 珍宝898 2013年7月17日 15:33
    2013年7月10日 7:59
    版主

全部回复

  • 你好,

    请参考以下代码,可以先根据控件ID获取到这个控件,之后对其中包含的htmlelement进行操作:

            Dim getControl As HtmlElement = WebBrowser1.Document.GetElementById("spServer")
            Dim selected As Integer = getControl.GetAttribute("value")
            Dim opCol As HtmlElementCollection = getControl.GetElementsByTagName("option")
            MsgBox("Number of options in control spServer :" & opCol.Count)
            Dim htmlCol As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("option")
            For Each he As HtmlElement In htmlCol
                Dim opName As String = he.GetAttribute("value")
                If opName = selected.ToString Then
                    MsgBox("selected item's text:" & he.InnerText)
                End If
            Next
    Regards,


    Shanks Zen
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 珍宝898 2013年7月17日 15:33
    2013年7月10日 7:59
    版主
  • '根据控件ID获取到这个控件
     
    Dim getControl As HtmlElement = WebBrowser1.Document.GetElementById("spServer")
     '问题1
    
    dim i as integer
    
    i=val(getControl.GetAttribute("selectedindex"))
     
    getControl.children(i).InnerText
     
    '问题2
     
    getControl.children.count
    


    • 已编辑 zs李四 2013年8月15日 6:43
    2013年8月15日 6:19