我已经搜索并找到了很多答案,但是无法将特定的组合框项目显示为在表单中显示记录的一部分。
表单包含一个具有DropDownList样式的组合框。我完全按照on MSDN所描述的那样使用ArrayList加载它。
加载组合框后,我正在读取数据库记录,我希望组合框的DisplayMember
项目显示的数据库值等于该项目的ValueMember
。我已经尝试了所有我能想到的东西,但始终会显示第一个DisplayMember
项目。我试过了:
cboVehicleBodyType.SelectedIndex = cboVehicleBodyType.FindString(clsVehicle.fk_body_type)
cboVehicleBodyType.SelectedItem = clsVehicle.fk_body_type
......以及其他一些变种,没有运气。
组合框含有约。 180个主体类型及其主键(从BodyType表加载),并且车辆的数据库记录包含主体类型主键(在Vehicle记录中命名为外键)。
如何在组合框中显示正确的体型?
答案 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查找不是您的密钥的显示值。