Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 检查combox是否包含特定字符串_Vb.net_Winforms - Fatal编程技术网

Vb.net 检查combox是否包含特定字符串

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

我有一个这样的代码来检查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 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…这是当今罕见的案例-至少在此之前我从未遇到过一次。