[英]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控件中添加id
和runat才能在后面的代碼中訪問它。 因此,您的選擇標簽將如下所示:
<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.