【问题标题】:Linking a combobox and textbox through list index通过列表索引链接组合框和文本框
【发布时间】:2024-01-15 06:12:01
【问题描述】:

我有一个组合框和一个文本框。组合框按字母顺序排列为列表,有五个项目。 “苹果”“熊”“猫”“狗”“麋鹿”。在数据库中,它们以权重列出

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  

但是,这是将重量与动物名称进行比较。我该如何改写这个?

【问题讨论】:

  • 还有一个关联的 TAG 属性,对于每个动物,在声明、手动添加或循环期间将重量放在 TAG 中,然后将文本与该项目的标签进行比较,这将给你你想要的。如果您需要一个工作示例,请告诉我,我必须在有我的 VB6 副本的系统上。
  • 是的,我想要一个有用的例子
  • 给我一点,我会把它交给你并张贴在这里。

标签: combobox textbox vb6 listitem


【解决方案1】:

在示例中,您有 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

【讨论】:

  • 哎呀,应该是动物,生病改变它
  • 那么问题出在哪里?你输入重量,你得到动物。这不是你想要的吗?能详细点吗?
  • 乔治,您对答案所做的假设是错误的。每只动物在数据库中都有一个体重,但它没有存储在任何地方。我已经把它带到了我只需要根据字符串找到组合框索引的地方,所以我怎么能找到“CAT”的索引
  • 我看不到连接i just need to find the combo box index based off of the string。如何在没有将权重加载到组合框中的情况下将输入字符串(即权重)连接到组合索引?当您使用名称填充组合框时,您可以使用权重填充 ItemData 吗?
  • +1 谢谢乔治,我被航班延误耽搁了,没有机会回复这个问题,感谢您处理代码示例。
最近更新 更多