我有两个组合框;一个包含国家/地区列表,另一个包含城市列表。如何设置它以便在您选择国家/地区时,该国家/地区的城市在其他组合框中可见?
我认为这基本上是根据第一个框的选定值为第二个框创建项目集合。
编辑:我正在寻找类似的东西:If cboCountry.Text = "Australia" Then
cboCity.Collection("Melbourne, "Sydney")
End If
答案 0 :(得分:1)
将数据加载到Dictionary(Of String, List(Of String))
,其中包含从国家/地区到城市的映射。
然后只需在字典中查看所选国家/地区并迭代其值。
以下是如何执行后一部分的示例。这假设您已经加载了字典数据(显然不对代码中的值进行硬编码):
' As a private Form variable:
Private cities As New Dictionary(Of String, List(Of String))()
' … Load data in Form_Load.
' In the citiesCombo.SelectedValueChanged event of the combo box:
cboCity.Items.Clear()
For Each city As var In cities(cboCountry.Text)
cboCity.Items.Add(city)
Next
如果你只是想用一些玩具数据测试一下,这里有一些:
Private cities As New Dictionary(Of String, List(Of String))() From { _
{"England", New List(Of String)() From {"London", "Darthmouth", "Oxford", "Cambridge"}}, _
{"Wales", New List(Of String)() From {"Cardiff", "Swansea"}}, _
{"Scotland", New List(Of String)() From {"Edinburgh", "Glasgow", "Aberdeen"}} _
}
答案 1 :(得分:0)
修改
继续编辑,我更改了代码,这应该是您正在寻找的内容:)
将其放入组合框1选择的值更改事件中,并且应该可以正常工作。
Private Sub cboCountry_SelectedValueChanged(sender As System.Object, e As System.EventArgs) Handles cboCountry.SelectedValueChanged
If cboCountry.Text = "England" Then
cboCity.Items.Add("London")
End If
End Sub