check combox包含特定的字符串

时间:2016-02-04 12:44:57

标签: vb.net winforms

我有一个这样的代码用于检查我的字符串包含在组合框中

Dim i As Integer = 0
For i = 0 To cmbwarehouse.Items.Count - 1              
    If cmbwarehouse.Items.Contains(wh(1)) Then
         msgbox("Do somthing")
         Exit For
   Else
         MsgBox("Not a Valid warehouse and bin no", MsgBoxStyle.Critical)
         Exit Sub
   End If
Next

但这不适合我。这段代码中的错误

1 个答案:

答案 0 :(得分:0)

ComboBox类有FindString方法。您传递一个字符串,它返回ComboBox中以该字符串开头的第一个项目的从零开始的索引。如果找不到匹配项,则返回-1。比编写自己的For循环容易得多。

如果您要搜索完全匹配,而不是任何以字符串开头的项目,您可以拨打FindStringExact

另请注意,这两个方法都使用第二个整数参数重载。如果您想忽略ComboBox开头的项目,那么您可以只在特定索引处开始搜索。或者,如果您想在第一场比赛之后找到其他项目(因为这些方法都会停止并返回他们找到的第一场比赛)。

还有一个Item方法,它返回该ComboBox中所有项的集合。但是这会更难以用来做你想要的,因为组合框项甚至不必是一个字符串。你可以在那里添加任何你想要的东西,只要它继承自Object(这基本上是.NET世界中的所有东西)。因此,如果您使用myComboBox.Items.Contains(...),它将在对象集合中搜索您指定的 exact 对象。这可能不是您想要的,因为可能有多个包含相同文本的String个对象。与myComboBox.Items.IndexOf(...)相同的问题。

示例代码:

' assuming wh(1) is a string...
Dim i As Integer = cmbwarehouse.FindStringExact(wh(1)
If (i <> -1) Then
    MsgBox("Found a matching item with index i.")
Else
    MsgBox("No matching item found.")
End If