Dim intX, intY As Integer
intY = Nums.GetUpperBound(0)
For intX = 0 To intY
With Nums(intX)
If .strFtID = strID Then
‘calls various subs/functions to get results to show in listbox
listbox.Items.Add(String.Format(strFmt, "various titles”))
listbox.Items.Add(String.Format(strFmt, variable results))
End If
End With
Next
在此循环中,为每个匹配添加标题的列表框,但我只希望它添加一次。如果整个循环搜索完毕并且没有匹配,我还想添加“不匹配”。此循环中有多个匹配项,因此无法将其置于其中或“else”下。
答案 0 :(得分:0)
为了能够知道是否找到匹配,我通常在循环外添加一个布尔值,我称之为“找到”。然后我将其设置为false。如果if语句是匹配的,我在if中设置为true。这样循环结束时我会知道是否有匹配。
Dim found as Boolean = false
For
If
found = true
End if
Next
对于列表框,我会这样做:
If Not listbox.Items.Contains(String.Format(strFmt, "various titles”)) Then
listbox.Items.Add(String.Format(strFmt, "various titles”))
End if
答案 1 :(得分:0)
尝试使用此代码,我认为这符合您的要求。
Dim intX, intY As Integer
intY = Nums.GetUpperBound(0)
For intX = 0 To intY
With Nums(intX)
If .strFtID = strID Then
'This following If statement will restricts the duplicate entries, That is
'multiple matches in your words.
If Not listbox.Items.Contains(String.Format(strFmt, "various titles”)) Then
listbox.Items.Add(String.Format(strFmt, "various titles”))
listbox.Items.Add(String.Format(strFmt, variable results))
End if
End If
End With
Next
现在循环之后,只需检查列表框的计数。如果其计数大于零,则在上部循环中找到一些匹配。这样我们就可以离开而不采取任何进一步的行动,其他方面只需在该列表框中添加“不匹配”一词,请参阅下面的代码,
if listbox.Items.count > 0
listbox.items.add(" NO MATCHES FOUND ")
end if