0

2 つのコンボボックスがあります。1 つは国のリストを含み、もう 1 つは都市のリストを含みます。国を選択すると、その国の都市が他のコンボボックスに表示されるように設定するにはどうすればよいですか?

これは基本的に、最初のボックスで選択した値に基づいて、2 番目のボックスのアイテム コレクションを作成していると思います。

編集:私はこのようなものを探しています:

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

2 に答える 2

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"}} _
}
于 2012-08-28T15:50:53.507 に答える
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
于 2012-08-28T15:16:47.597 に答える