通过列表索引链接组合框和文本框

时间:2014-02-03 20:28:23

标签: combobox textbox vb6 listitem

我有一个组合框和一个文本框。组合框按字母顺序排序,有五个项目。 “APPLE”“BEAR”“CAT”“DOG”“ELK”。在数据库中,它们以权重列出

APPLE称重2,BEAR重100,CAT重7,DOG重20,ELK重30,

我想改变组合框,根据我在Lost_Focus上输入的重量选择合适的动物。所以我有

 For i = 0 To 4
    If txtField.Text = Me.cmbAnimal.ItemData(i) Then
        Me.cmbAnimal.ListIndex = i
    End If

    Next i  

然而,这是将重量与动物名称进行比较。我怎么能改写这个?

1 个答案:

答案 0 :(得分:2)

在示例中,您有2个不同的组合框:cmbAnimalcmbSeqCarrier。你在用哪一个?

您对使用ItemData有正确的想法(假设它存储了动物的重量)。在下面的示例中,ItemData属性保存权重。如果Text1是您输入权重的框,则下面的示例应该执行您要求的任务。

'Load weights with the names to a combobox
Private Sub Form_Load()
    cmbAnimal.AddItem "APPLE"
    cmbAnimal.ItemData(cmbAnimal.NewIndex) = 2
    cmbAnimal.AddItem "BEAR "
    cmbAnimal.ItemData(cmbAnimal.NewIndex) = 100
    cmbAnimal.AddItem "CAT"
    cmbAnimal.ItemData(cmbAnimal.NewIndex) = 7
    cmbAnimal.AddItem "DOG"
    cmbAnimal.ItemData(cmbAnimal.NewIndex) = 20
    cmbAnimal.AddItem "ELK"
    cmbAnimal.ItemData(cmbAnimal.NewIndex) = 30
End Sub

如果您将权重加载到ItemData,那么这将正常工作:

Private Sub Text1_LostFocus()
    Dim i As Integer
    For i = 0 To cmbAnimal.ListCount - 1
        ' compare weight entered into text box with weights stored in the combobox
        If Trim(cmbAnimal.ItemData(i)) = Trim(Text1.Text) Then
            cmbAnimal.ListIndex = (i)
            Exit For
        End If
    Next i
End Sub