2014-01-19 80 views
0

我有一個組合框和一個列表框。 我想要的是,當我從組合框中選擇一個值(文本)來檢查列表框中是否有相同的值(相同的文本),如果有,則msgbox應顯示爲「數據找到」如何比較組合框值與列表框中的項目 - vb.net

我想這段代碼,但它不是事先工作

暗淡我作爲整數

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

    Next i 

感謝....

回答

2

您使用的是有你比較不同的含義兩個屬性。 SelectedItem是一個對象(可能取決於你如何填補組合是任何東西,ValueMember是在ListBox中的項目的實際值使用屬性的只是名字。

但是兩個類(ListBox和組合框)共享存儲的列表項,那麼假設都被填充使用字符串列表相同的模式,然後你的代碼可能是

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 
0
If ComboBox1.SelectedItem = ListBox1.ValueMember Then 

應該

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

請注意, ComboBox1.SelectedItem 只適用於集合內的項目。您可以通過 .text 參數將其擴展爲任何文本。

P.D.

Next i '??? 
0

使用您的ComboBoxListBox實物往往會導致你的應用程序更好的靈活性。

例如,您有一個汽車大量的應用程序,其中有很長的可用汽車列表,並且您不想瀏覽整個列表 - 您使用ComboBox選擇製造商和型號,並且使用這些商品在你的列表框中。

(in pseudo-code)

您的車對象。

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

class AvailableCar Inherits Car 
    IsOnTheLot 
    VIN 
    Price 
    'etc 
End Class 

在您的Form類

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 

優勢 - 你有很多的立即可用的信息。

相關問題