如何在涉及循环时将项目添加到列表框?

时间:2013-04-11 05:35:06

标签: vb.net loops listbox match

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”下。

2 个答案:

答案 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