从另一个组合框中填充组合框

时间:2012-08-28 15:03:11

标签: vb.net

我有两个组合框;一个包含国家/地区列表,另一个包含城市列表。如何设置它以便在您选择国家/地区时,该国家/地区的城市在其他组合框中可见?

我认为这基本上是根据第一个框的选定值为第二个框创建项目集合。

编辑:我正在寻找类似的东西:

If cboCountry.Text = "Australia" Then
 cboCity.Collection("Melbourne, "Sydney")
End If

2 个答案:

答案 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