如何比较组合框值与列表框中的项目 - vb.net

时间:2014-01-19 18:52:16

标签: vb.net combobox listbox

我有一个组合框和一个列表框。 我想要的是,当我从组合框中选择一个值(文本)来检查列表框中是否有相同的值(相同的文本),如果有,则msgbox应显示为“DATA FOUND”

我尝试了这段代码,但它不能正常工作

Dim i As Integer

    For i = 0 To ListBox1.Items.Count - 1
        If ComboBox1.SelectedItem = ListBox1.ValueMember Then
            MsgBox("DATA FOUND")
        End If

    Next i

提前致谢....

3 个答案:

答案 0 :(得分:2)

您正在使用具有不同含义的两个属性进行比较。 SelectedItem是一个对象(可以是任何东西,取决于你如何填充组合,ValueMember只是一个属性的名称,用作ListBox中项目的实际值。

然而,两个类(ListBox和ComboBox)共享相同的模式来存储它们的列表项,所以假设两个类都使用字符串列表填充,那么你的代码可能是

Dim curComboItem = ComboBox1.SelectedItem.ToString()
For i = 0 To ListBox1.Items.Count - 1
    If  curComboItem = ListBox1.Items(i).ToString() Then
        MsgBox("DATA FOUND")
        Exit For
    End If
Next i

答案 1 :(得分:0)

If ComboBox1.SelectedItem = ListBox1.ValueMember Then

应该是

If ComboBox1.SelectedItem = ListBox1.Items(i) Then

请注意     ComboBox1.SelectedItem 仅适用于Collection内的项目。你可以将它扩展到任何文本     。文本 参数。

Pd积

Next i '???

答案 2 :(得分:0)

ComboBoxListBox中使用真实对象通常可以提高应用程序的灵活性。

例如,您有一个车载应用程序,其中您有很长的可用汽车列表而您不想浏览整个列表 - 您使用ComboBox来选择品牌和型号,并对其中的项目执行某些操作你的列表框。

(伪代码)

你的车对象。

class Car
    ModelId
    ModelMake
    ModelName
    FullName = ModelMake & " " & ModelName
End Class

class AvailableCar Inherits Car
    IsOnTheLot
    VIN
    Price
    'etc
End Class

在您的表单类

comboCarMakes.DataSource = GetListOfMakesOfCars() ' List of Car classes
comboCarMakes.ValueMember = "ModelId"
comboCarMakes.DisplayMember = "FullName" 

listAvbailableCars.DataSource = GetListOfAvailableCars() ' List of AvailableCar classes
listAvbailableCars.ValueMember = "VIN"
listAvbailableCars.DisplayMember = "FullName" 

Sub comboCarMakes_SelectedIndexChanged


    Dim car as Car = DirectCast(comboCarMakes.SelectedItem, Car)
    For i = 0 To listAvbailableCars.Items.Count - 1
        If  car.ModelId = DirectCast(listAvbailableCars.Items(i), AvailableCar).ModelId Then
            ' Do something
        End If
    Next
End Sub

优势 - 您可以立即获得大量信息。