2012-08-28 5 views
0

J'ai deux zones de liste déroulantes; l'un contient une liste de pays, et l'autre contient une liste de villes. Comment puis-je le définir de sorte que lorsque vous sélectionnez un pays, les villes de ce pays deviennent visibles dans l'autre liste déroulante?Remplissage d'une zone de liste déroulante à partir d'une autre zone de liste déroulante

Je suppose que cela crée essentiellement la collection d'éléments pour la deuxième boîte en fonction de la valeur sélectionnée de la première.

EDIT: Je cherche quelque chose comme ceci:

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

Répondre

0

EDIT

Aller sur votre édition, je l'ai changé le code, cela devrait être ce que vous cherchez :)

Placez ceci dans l'événement modifié de la valeur de la liste déroulante 1 et cela devrait fonctionner.

  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 
+1

Ceci est une mauvaise solution. Il bloque votre code, les données n'apparaissent pas dans le code de toute façon, et l'approche tombe dès que vous avez plus de quelques villes/pays, ou lorsque vous avez des données chargées dynamiquement à l'exécution. Et enfin, c'est inutilement compliqué même dans des cas simples. –

+1

C'est une solution simple pour une question simple, juste en attente de votre solution maintenant .. – Jacooobley

+0

C'est loin d'être une solution simple. Votre réponse ne montre pas vraiment la solution, elle montre juste le code de squelette (pas même complet) pour un * pays * simple. Allez-y, écrivez-en un complet pour les pays de l'Union européenne et leurs capitales de district seulement (pour rester simple). –

1

Chargez les données dans un Dictionary(Of String, List(Of String)) qui contient le mappage des pays vers les villes.

Ensuite, regardez simplement le pays sélectionné dans le dictionnaire et passez en revue ses valeurs.

Voici un exemple de la dernière partie. Cela suppose que vous avez déjà chargé vos données du dictionnaire (évidemment ne le font pas coder en dur les valeurs dans le code):

' 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 

Si vous voulez juste tester cela avec des données de jouets , voici quelques uns:

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"}} _ 
} 
Questions connexes