2013-04-11 58 views
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 

在此循環中,爲每個匹配添加了標題的列表框,但我只希望它添加一次。如果在整個循環搜索之後沒有匹配,我還想添加「不匹配」。在這個循環中有多個匹配,因此它不能放在其中或在「其他」之下。如何在涉及循環時將項目添加到列表框?

回答

0

爲了能夠知道是否找到了匹配,我通常在我稱之爲「找到」的循環之外添加一個布爾值。然後我將它設置爲false。如果if語句是我在if中找到的匹配,循環結束時我會知道是否有匹配。

Dim found as Boolean = false 
For 
If 
    found = true 
End if 
Next 

爲ListBox我這樣做:

If Not listbox.Items.Contains(String.Format(strFmt, "various titles」)) Then 
listbox.Items.Add(String.Format(strFmt, "various titles」)) 
End if 
+0

太棒了,非常感謝! – ihaveatoaster 2013-04-11 06:31:59

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 
相關問題