Vb.net 检查combox是否包含特定字符串
我有一个这样的代码来检查combobox中包含的字符串Vb.net 检查combox是否包含特定字符串,vb.net,winforms,Vb.net,Winforms,我有一个这样的代码来检查combobox中包含的字符串 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 an
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。比为循环编写自己的
容易得多
如果要搜索完全匹配的项,而不是任何以字符串开头的项,可以调用
还要注意,这两个方法都使用第二个整数参数重载。这样,如果您想忽略组合框开头的项目,就可以只在特定索引处开始搜索。或者,如果您想在第一个匹配项之外找到其他项(因为这些方法都会停止并返回它们找到的第一个匹配项)
还有一个Item
方法返回该组合框中所有项的集合。但这将更难用于实现您想要的功能,因为组合框项目甚至不必是字符串。您可以在其中添加任何您想要的内容,只要它继承自对象
(基本上是.NET世界中的所有内容)。因此,如果您使用myComboBox.Items.Contains(…)
,它将在对象集合中搜索您指定的确切对象。这可能不是您想要的,因为可能有多个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
假设wh(1)是一个字符串。。。
Dim i作为整数=cmbwarehouse.FindStringExact(wh(1)
如果(i-1)那么
MsgBox(“找到索引为i的匹配项”)
其他的
MsgBox(“未找到匹配项”)
如果结束
我认为您需要:cmbwarehouse.Items(I)。任何东西都不能像这样提供。cmbwarehouse.Items(I)。ToString.Contains(wh(1))cmbwarehouse.Items(I).ToString dot contains not gettingshowing contains不是stringshowing FindStringExact的成员如果FindStringExact不是system.winodws.forms.comboboxHmm的成员,那么您的设置有问题。因为文档非常清楚地表明存在此问题。它可能在.NET Framework.Su的1.0版本中不存在请相信,您的目标不是那么旧的版本,是吗?在问题中提到这一点会很有帮助。您可以选择自己编写循环,或者p/invoke来借助Win32控件中包含的功能。您需要SendMessage函数来发送
CB_FINDSTRINGEXACT
消息。请查看帮助。.NET1.0…这是当今罕见的案例-至少在此之前我从未遇到过一次。