如何设置组合框的vb.net selectedindex绑定到arraylist

时间:2016-03-22 13:35:15

标签: vb.net combobox

我已经搜索并找到了很多答案,但是无法将特定的组合框项目显示为在表单中显示记录的一部分。

表单包含一个具有DropDownList样式的组合框。我完全按照on MSDN所描述的那样使用ArrayList加载它。

加载组合框后,我正在读取数据库记录,我希望组合框的DisplayMember项目显示的数据库值等于该项目的ValueMember。我已经尝试了所有我能想到的东西,但始终会显示第一个DisplayMember项目。我试过了:

cboVehicleBodyType.SelectedIndex = cboVehicleBodyType.FindString(clsVehicle.fk_body_type)

cboVehicleBodyType.SelectedItem = clsVehicle.fk_body_type

......以及其他一些变种,没有运气。

组合框含有约。 180个主体类型及其主键(从BodyType表加载),并且车辆的数据库记录包含主体类型主键(在Vehicle记录中命名为外键)。

如何在组合框中显示正确的体型?

1 个答案:

答案 0 :(得分:0)

要与MSDN中的示例保持一致,您可以选择以下项目:

  Private Sub SelectItem(box As ComboBox, stateKey As String)
    For curItem As Integer = 0 To box.Items.Count - 1
      If DirectCast(box.Items(curItem), USState).ShortName = stateKey Then
        box.SelectedIndex = curItem
        Return
      End If
    Next
  End Sub


  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim USStates As New ArrayList()
    USStates.Add(New USState("Alabama", "AL"))
    USStates.Add(New USState("Washington", "WA"))
    USStates.Add(New USState("West Virginia", "WV"))
    USStates.Add(New USState("Wisconsin", "WI"))
    USStates.Add(New USState("Wyoming", "WY"))
    ComboBox1.DataSource = USStates

    ComboBox1.DisplayMember = "LongName"
    ComboBox1.ValueMember = "ShortName"
    SelectItem(ComboBox1, "WY")
  End Sub

此代码遍历元素并查找键值。 FindString查找不是您的密钥的显示值。