2017-10-20 43 views
0

Je crée un formulaire Windows, dans cette forme j'ai deux Combo Boxes que je veux être lié ensemble, ce qui signifie que lorsque je sélectionne un élément dans la première zone de liste déroulante (Catégorie), il va changer les éléments de l'autre zone de liste déroulante (Item) en conséquence. Je n'ai pas de code pour le moment parce que je ne sais pas trop comment commencer. Example L'image est hors de la forme, si elle aide de quelque façon que ce soit pour que vous compreniez ce dont j'ai besoin, alors c'est là. J'ai été sur différents sites essayant de lire sur la façon de le faire, mais je suis complètement perdu. Si quelqu'un peut me pointer dans la bonne direction alors ce serait très apprécié ![Example2 Je reçois maintenant cette erreur chaque fois que je l'exécute et je ne suis pas sûr de la façon de le réparer, je ne suis pas sûr de ce qu'il faut mettre dans ces parenthèses. SelectedItem() Then ' Peu importe ce que je semble mettre rien ne fonctionne.Comment puis-je modifier les options dans un ComboBox en fonction d'un autre ComboBox?

Classe publique frmRestaurantOrd

Public Shared cmbCatDrinks As String = "Drinks" 

Public Shared cmbCatMain As String = "Main" 

Private Sub cmbCat_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbCat.SelectedIndexChanged 
    If cmbCat.SelectedItem() Then 
     cmbItem.Items.Add("Water") 
     cmbItem.Items.Add("Orange Juice") 
     cmbItem.Items.Add("Coca Cola") 
     cmbItem.Items.Add("Beer") 
    ElseIf cmbCat.SelectedItem("Main") Then 
     cmbItem.Items.Add("Piza 1") 
    Else cmbCat.SelectedItem.Equals("") 
     cmbItem.Items.Clear() 
    End If 
End Sub 

Private Sub frmRestaurantOrd_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    cmbCat.Items.Add(cmbCatDrinks) 
    cmbCat.Items.Add(cmbCatMain) 
End Sub 
+0

Double-cliquez sur la première zone de liste déroulante, il devrait ouvrir la fenêtre de code pour l'événement de sélection, il vous Veux effacer la deuxième zone de liste déroulante et la remplir en fonction de l'élément sélectionné dans la première zone de liste déroulante –

+0

Pouvez-vous lister quelques commandes qui seraient utilisées pour cela? Ce serait vraiment utile, et je pourrais faire des essais et des erreurs jusqu'à ce que je m'en aperçoive. – Ollie4735

+0

Avec la zone de liste déroulante Catégorie sélectionnée dans le concepteur, cliquez sur l'icône représentant un éclair dans la fenêtre Propriétés pour afficher les événements d'une zone de liste déroulante. Puis double-cliquez sur le ComboBox à droite de SelectedIndexChanged pour créer un gestionnaire pour cet événement. Ajoutez du code au gestionnaire pour obtenir la sélection en cours et ajouter des éléments à l'autre ComboBox. –

Répondre

0

Je vous encourage à séparer vos données de la logique. Ce que je veux dire par là est de créer une catégorie distincte pour chaque catégorie de sélection afin que vous finirez avec trois listes:

List(Of Category) « Cette liste contiendra les deux catégories de choix: boire, MainDish

List(Of Drink) » Cette liste contient les choix de boissons

List(Of MainDish) « Cette liste contiendra les choix de plats principaux

J'éviter d'utiliser « Main », comme le nom d'une classe liste

Ensuite, en fonction du choix effectué par un utilisateur dans votre zone de liste déroulante cmbCat, définissez la propriété cmbItem DataSource sur une liste ou l'autre.

Code Pseudo: cmbItem.DataSource = IIf (cmbCat.SelectedIndex == 0, boissons, MainDish)