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

4

2 回答 2

0

为了能够知道是否找到了匹配项,我通常在循环外添加一个布尔值,我称之为“找到”。然后我将其设置为假。如果 if 语句曾经是匹配项,我在 if 中将 found 设置为 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
于 2013-04-11T06:09:29.260 回答
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

现在在循环之后,只需检查列表框的计数。如果其计数大于零,则在上层循环中找到了一些匹配项。这样我们就可以离开而不采取任何进一步的行动,否则只需在该列表框中添加单词“No Matches”,请参阅下面的代码,

if listbox.Items.count > 0
 listbox.items.add(" NO MATCHES FOUND ")
end if
于 2013-04-11T06:32:37.710 回答