簡體   English   中英

將HTML下拉列表轉換為VB.NET組合框

[英]Convert HTML Dropdown into VB.NET Combobox

我知道這聽起來有些奇怪,但是我想提取HTML select標簽的值和文本。 例如,假設我有一個HTML頁面,其中包含此select標記

<select name="selectName">
    <option value="1">Value 1 text</option>
    <option value="2">Value 2 text</option>
</select>

有什么辦法可以遍歷該特定的select標簽並使用VB.NET提取每個值和每個顯示的文本

也許是這樣的:

For Each option In selectName
    MsgBox(option.value.ToString + " " + option.Text)
Next

任何幫助,將不勝感激。

您可以通過向DocumentCompleted事件添加一個句柄並使用LINQ查詢HtmlDocument來實現

例:

在此處輸入圖片說明

Option Strict On

Public Class Form1

    Public Sub New()
        Me.InitializeComponent()
        Me.Button1 = New Button() With {.TabIndex = 0, .Dock = DockStyle.Top, .Text = "Load web page", .Height = 30}
        Me.WebBrowser1 = New WebBrowser() With {.TabIndex = 1, .Dock = DockStyle.Fill}
        Me.ComboBox1 = New ComboBox() With {.TabIndex = 2, .Dock = DockStyle.Bottom, .DropDownStyle = ComboBoxStyle.DropDownList}
        Me.Controls.AddRange({Me.ComboBox1, Me.WebBrowser1, Me.Button1})
    End Sub

    Private Sub HandleButtonClick(sender As Object, e As EventArgs) Handles Button1.Click
        Me.WebBrowser1.DocumentText = <!--
            <!DOCTYPE html>
            <html>
                <body>
                    <select name="selectName">
                      <option value="1">Value 1 text</option>
                      <option value="2">Value 2 text</option>
                      <option value="3">Value 3 text</option>
                      <option value="4">Value 4 text</option>
                    </select>
                </body>
            </html>
        -->.Value
    End Sub

    Private Sub HandleWebBrowserDocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        If (Not Me.WebBrowser1.Document Is Nothing) Then

            Dim selectTag As HtmlElement = (
                From
                    element As HtmlElement
                In
                    Me.WebBrowser1.Document.GetElementsByTagName("select").Cast(Of HtmlElement)()
                Where
                    element.Name = "selectName"
                Select
                    element
            ).FirstOrDefault()

            If (Not selectTag Is Nothing) Then

                Dim options As List(Of KeyValuePair(Of Integer, String)) = (
                    From
                        element As HtmlElement
                    In
                        selectTag.GetElementsByTagName("option").Cast(Of HtmlElement)()
                    Select
                        New KeyValuePair(Of Integer, String)(Integer.Parse(element.GetAttribute("value")), element.InnerText)
                ).ToList()

                Me.ComboBox1.DataSource = options
                Me.ComboBox1.ValueMember = "Key"
                Me.ComboBox1.DisplayMember = "Value"

            End If

        End If
    End Sub

    Private WithEvents Button1 As Button
    Private WithEvents WebBrowser1 As WebBrowser
    Private WithEvents ComboBox1 As ComboBox

End Class

您需要在HTML控件中添加idrunat才能在后面的代碼中訪問它。 因此,您的選擇標簽將如下所示:

  <select name="selectName" id ="cbosample" runat ="server">
    <option value="1">Value 1 text</option>
    <option value="2">Value 2 text</option>
  </select>

現在,可以在后面的代碼中訪問控件了。 代碼在警報框中顯示為:

 For i As Integer = 0 To cbosample.Items.Count - 1 '  tems
     MsgBox(cbosample.Items(i).ToString)
 Next 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM