2017-10-20 2 views
0

Ich erstelle ein Windows-Formular, in dieser Form habe ich zwei Combo-Boxen, die ich miteinander verknüpft werden soll, was bedeutet, wenn ich ein Element im ersten Kombinationsfeld (Kategorie) auswählt, werden die Elemente im anderen Kombinationsfeld geändert (Artikel) entsprechend. Ich habe im Moment keinen Code, weil ich unsicher bin, wie ich anfangen soll. Example Das Bild ist aus der Form, wenn es in irgendeiner Weise für Sie hilft zu verstehen, was ich tun muss, dann ist es da. Ich habe auf verschiedenen Seiten versucht, darüber zu lesen, wie es geht, aber ich bin einfach völlig verloren. Wenn mir jemand in die richtige Richtung zeigen kann, dann würde das sehr geschätzt werden ![Example2 Ich erhalte jetzt diesen Fehler, wenn ich ihn ausführe und ich bin mir nicht sicher, wie ich ihn beheben soll, ich bin mir nicht sicher, was ich in diese Klammern schreiben soll 'If cmbCat. SelectedItem() Dann ' Egal was ich scheine, nichts funktioniert.Wie ändere ich die Optionen in einer ComboBox abhängig von einer anderen ComboBox?

Public Class 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

Doppelklicken Sie auf das erste Kombinationsfeld, sollte es das Codefenster für die Auswahl Ereignis öffnen, du da drin Ich möchte das zweite Kombinationsfeld löschen und es basierend auf dem ausgewählten Element in dem ersten Kombinationsfeld füllen. –

+0

Können Sie einige Befehle auflisten, die dafür verwendet werden? Es wäre wirklich hilfreich, und dann kann ich versuchen und Fehler machen, bis ich es herausgefunden habe. – Ollie4735

+0

Klicken Sie bei geöffnetem Kategorie-Kombinationsfeld im Designer auf das Blitzsymbol im Eigenschaftenfenster, um die Ereignisse für ein Kombinationsfeld anzuzeigen. Doppelklicken Sie dann auf das Kombinationsfeld rechts neben SelectedIndexChanged, um einen Handler für dieses Ereignis zu erstellen. Fügen Sie dem Handler Code hinzu, um die aktuelle Auswahl zu erhalten und Elemente zur anderen ComboBox hinzuzufügen. –

Antwort

0

Ich würde empfehlen Ihnen, Ihre Daten aus der Logik trennen. Was ich damit meine ist, eine eigene Klasse für jede Auswahl Kategorie erstellen, so dass Sie mit drei Listen werden am Ende:

List(Of Category) ‚Diese Liste wird die zwei Kategorie der Auswahl enthalten: Getränke, MainDish

List(Of Drink)‘ Diese Liste enthält die Auswahl an Getränken

List(Of MainDish) ‚Diese Liste wird die Auswahl an Hauptgerichten enthalten

ich möchte vermeiden,‚Main‘, wie der Name einer Klasse oder Liste

mit

Basierend auf der Auswahl, die ein Benutzer in Ihrem Kombinationsfeld cmbCat vornimmt, legen Sie die Eigenschaft cmbItem DataSource auf die eine oder die andere Liste fest.

Pseudo-Code: cmbItem.DataSource = IIf (cmbCat.SelectedIndex == 0, Getränke, MainDish)

Verwandte Themen