我想要一个特定属性的值(例如,在我的html示例中title_1(,我在Visual Studio中使用组合框选择该属性。我在循环访问属性时遇到问题。它仅适用于title_1,并在title_1后停止。
跟随我的 html 文件
<div id="main">
<div id="title_1">
<p>product name</p>
</div>
<div id="title_2">
<p>product highlights</p>
</div>
<div id="content">
<p>product price - product size - product date</p>
</div>
</div id="main">
因此,如果我在 ComboBox1 中title_2,我希望在我的文本框 1 中突出显示产品。如果我在 ComboBox1 中选择内容,我希望产品价格 - 产品大小 - 产品日期在我的文本框 1 中。到目前为止,它仅适用于title_1,在这里我在我的文本框中获得了产品名称1
这是我的代码
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim xelement As XElement = XElement.Load("myPATHfile.html")
Dim attributes As IEnumerable(Of XElement) = xelement.Descendants("div")
For Each item As XElement In attributes
If attributes.@id = ComboBox1.Text Then
TextBox1.Text = attributes.Value
End If
Next
End Sub
End Class
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
End Sub
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
End Sub
这可能只是一个错字。你在attributes
中迭代每个item
,但随后你不访问item
,而是attributes
。
For Each item As XElement In attributes
If attributes.@id = ComboBox1.Text Then
TextBox1.Text = attributes.Value
End If
Next
将其更改为此
For Each item As XElement In attributes
If item.@id = ComboBox1.Text Then
TextBox1.Text = item.Value
End If
Next
固定。
此外,您的 html 在结束标记中包含属性。这有效吗?我必须删除它才能使代码正常工作。
</div id="main">
我会在匹配值之前添加此行以清除 TextBox1,以防不匹配
TextBox1.Clear()
您可能将属性加载到 ComboBox 中。但如果你不这样做,请使用这个。如果您将其包括在内,这将使问题更完整
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim xelement As XElement = XElement.Load("myPATHfile.html")
Dim attributes As IEnumerable(Of XElement) = xelement.Descendants("div")
ComboBox1.DataSource = attributes.Select(Function(a) a.@id).ToList()
End Sub