Combobox mit Variable füllen

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von Eddy Dreizehn.

    Combobox mit Variable füllen

    Moin,

    Ich befasse mich grad mit dem Thema Comboboxen und plane eine Combobox die Items anzeigt von meiner Variable.

    Beispiel: Ist Vaiable 2, zeigt die Combobox "Du hast 2 Verfügbar" ....

    nur wie stelle ich das am besten an, habe es wie folgt versucht:

    - CB_box.Items.ToString(Integer)

    habe noch einige andere dinge versucht mit .Text.....SelectedItem.ToString..... oder add

    hoffe ihr könnt mir weiter helfen. :S
    Hey vbHunter,
    auf msdn gibtb es super beispiele:
    msdn.microsoft.com/de-de/libra…cs-lang=vb#code-snippet-1

    Neues Item:

    Quellcode

    1. ComboBox1.Items.Add("Tokyo")


    Neues Item an bestimmter Stelle:

    Quellcode

    1. CheckedListBox1.Items.Insert(0, "Copenhagen")


    Am ende so etwas:

    Quellcode

    1. CB_box.Items.Add("Text" & integerVariable & "text" )
    @VBHunter
    Ich empfehle dir wirklich dir beizubringen wie man sich Infos über MSDN, F1, Forensuche, Google besorgt.

    In der Zeit in welcher du diesen Beitrag geschrieben hast hättest du so viel über die Combobox lernen können das du dein Problem und gleich auch die nächsten lösen hättest können.
    Ich denke auch deine Zeit ist sicher beschränkt und wenn du innerhalb von Sekunden zur Antwort kommen könntest würdest du dir sehr viel Zeit sparen. Ist nur ein Tipp, aber leider befolgst du Tipps nur selten.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Danke für deine antwort. @Shawn

    Ah Prima werd mal versuchen es so umzusetzen. :thumbup:

    EDIT:
    Okay das hatte jetzt ganz gut funktioniert, aber wie kann ich diesen Item was ausgewält wurde per If abfragen....

    mit CB_box.SelectedItem.ToString ?

    so sieht mein Test aus:

    VB.NET-Quellcode

    1. If CB_box.SelectedItem.ToString Then
    2. If SprinterPlatz < 1 Then
    3. MessageBox.Show("Du hast nicht genug Platz im Fahrzeug.", "Information")
    4. Exit Sub
    5. End If


    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VBHunter“ ()

    VBHunter schrieb:

    VB.NET-Quellcode

    1. If CB_box.SelectedItem.ToString Then
    Zunächst machst Du Option Strict On.
    So was:

    VB.NET-Quellcode

    1. If CB_box.SelectedItem.ToString() = HIER_MUSS_DER_STRING_STEHEN_DEN_DU_HABEN_WILLST Then
    oder Du musst Dir aus diesem String Deinen SprinterPlatz extrahieren und den testen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @VBHunter , @RodFromGermany Ich würde eher mit dem flexibleren "Index" arbeiten.

    Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. ComboBox1.Items.Add("Gelb") '0
    3. ComboBox1.Items.Add("Rot") '1
    4. ComboBox1.Items.Add("Blau") '2
    5. End Sub
    6. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    7. If ComboBox1.SelectedIndex() = 2 Then ' Nur wenn Blau ausgewählt wurde, bzw. der Dritte Eintrag
    8. Button1.Text = ComboBox1.Text
    9. End If


    Beachte das der Index immer ab 0 anfängt.
    oh Danke @RodFromGermany , da lag ich ja doch garnicht so falsch die () hinterm
    SelectedItem.ToString
    habe ich nur vegessen zu Kopieren X/ ... dachte nur das ich es in die klammern schreiben musste :/ .

    Danke auch dir @Shawn deine variante finde ich besser, da ich lange Items und diese oft im script brauch spare ich mir dadurch etwas Zeit.

    Ich hab meine Combobox auf "DropDownList" gestellt, am anfang ist die Liste leer und man wählt anhand des Pfeils aus. danach gibt es kein leeres Feld mehr zum auswählen.
    Kann man Item wieder als -1 hinterlegen oder kann ich das nur mit ein Lösch Button machen und Clearn?
    Nur so zur Ergänzung:

    Die ComboBox kann komplette Objekte beherbergen. Im zusammenspiel mit DisplayMember/ValueMember eine feine Sache...

    Der Klassiker als Beispiel:
    Dateien in der Listbox. Statt stupide Pfade als String anzuzeigen packt man ne komplette FileInfo da rein und zeigt nur den Namen der Datei an. Beim Auswählen kommt man dann ans ganze FileInfo Objekt, statt nur dem stupiden Pfad... Gibts nen super Thread drüber hier, kann man mal durchlesen.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Okay danke....

    hab hier grad wieder ein kleinen Fehler der sich eingeschlichen hat.

    VB.NET-Quellcode

    1. If CB_VerfuegbareFahrzeuge.SelectedItem.ToString() = SprinterVerfügbar < 1 Then
    2. MessageBox.Show("Leider ist kein Fahrzeug verfügbar.", "Information")
    3. Exit Sub
    4. End If


    Ich will z.b. das wenn per Combo, der Sprinter ausgewählt wird und (der Integer) SprinterVerfügbar = 0 ist halt die MSB ausgibt.
    @VBHunter Machst Du zunächst Option Strict On.
    Dann überlegst Du, was Du da eigentlich verzapft hast:

    VB.NET-Quellcode

    1. If "5" = True < 1 Then
    oder

    VB.NET-Quellcode

    1. If "5" = 42 < 1 Then
    Je nachdem, ob SprinterVerfügbar ein Boolean oder ein Integer ist.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Stimmt .... sorry da kann ich ja eine normale abfrage starten ohne Item..... Danke für's wachrütteln

    aber mein eigendliches problem ist ehr das:



    Wenn ich sprinter aus der Combobox wähle und Kaufen klicke, soll er bei SprinterVerfügbar einen abziehen und dann nur noch 1 Verfügbar anzeigen. Er zeigt aber trotzdem immer zwei.
    PS: die Combobox setzt sich bei Click zurück auf -1

    VB.NET-Quellcode

    1. If MessageBox.Show("Möchtest du wirklich 42 Sack Beton kaufen für 117 ,- €?", "Information", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
    2. If CB_VerfuegbareFahrzeuge.SelectedIndex() = 0 Then
    3. SprinterVerfügbar -= 1
    4. Label_SprinterVerfuegbar.Text = Format(Val(SprinterVerfügbar), "###,#0").ToString
    5. SprinterUnterwegs += 1
    6. Label_SprinterUnterwegs.Text = Format(Val(SprinterUnterwegs), "###,#0").ToString
    7. End If
    8. 'Dim t = New BuildTimerObject("1 Palette Kaufen " & Now.ToLongTimeString, EineBetonKaufen, Me.FlowPanel1)
    9. 'AddHandler t.Ladenfertig, AddressOf FertigEineBetonKaufen
    10. '_timers.Add(t)
    11. 'BetonKaufen_Button.Enabled = False
    12. CB_Betonkauf.SelectedIndex -= 1
    13. CB_VerfuegbareFahrzeuge.SelectedIndex -= 1
    14. Label_Stellplaetze_Beton.Text = String.Empty
    15. Label_Lieferzeit_Beton.Text = String.Empty
    16. Label_Kosten_Beton.Text = String.Empty
    17. FirmenKontoSumme -= 117
    18. Label_fKonto.Text = Format(Val(FirmenKontoSumme), "###,#0.00 €").ToString
    19. LkwVerbrauchGesamt += 1
    20. Label_Lkwverbrauch_Gesamt.Text = Format(Val(LkwVerbrauchGesamt), "###,#0").ToString
    21. End If


    EDIT:
    Das auskommentierte ist nur damit er nicht anfängt den Button zu deaktivieren usw.... zum Test

    VBHunter schrieb:

    Er zeigt aber trotzdem immer zwei.
    OK.
    Setze einen Haltepunkt in die Prozedur und kläre auf, was passiert und was NICHT passiert, wenn Du den Wert änderst, lerne zu debuggen: Debuggen, Fehler finden und beseitigen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ich glaub er erkennt mein index nicht.... wenn ich das so mache

    VB.NET-Quellcode

    1. If CB_VerfuegbareFahrzeuge.SelectedItem(0).index Then


    zeigt er da Fehler: ....



    aber so sieht mein Load aus:

    VB.NET-Quellcode

    1. 'Combobox Fahrzeuge Sprinter
    2. CB_VerfuegbareFahrzeuge.Items.Add(SprinterVerfügbar & " Sprinter (à 1 Palette) Verfügbar")


    EDIT:
    OKay soweit hab ich es hinbekommen.... mein Fehler war das

    VB.NET-Quellcode

    1. CB_VerfuegbareFahrzeuge.Items.Add(SprinterVerfügbar & " Sprinter (à 1 Palette) Verfügbar")


    ich habe SprinterVerfügbar geändert in:

    VB.NET-Quellcode

    1. CB_VerfuegbareFahrzeuge.Items.Add(Label_SprinterVerfuegbar.Text & " Sprinter (à 1 Palette) Verfügbar")


    weil er ja von meinen Label ausgehen soll .... soweit so gut aber er rechnet immernoch in der Combobox nicht minus sprich er zeigt trotzdem Sprinterverfügbar 0 .... 2 Verfügbar an... kann man die Box aktualisieren?

    achso und es funktioniert nur wenn ich es in

    VB.NET-Quellcode

    1. Private Sub CB_VerfuegbareFahrzeuge_SelectedIndexChanged

    setze

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „VBHunter“ ()



    Hm weiß einfach nicht weiter, wenn ich auf kaufen klicke ändert sich auch alles in meiner verwaltung, aber in meiner Combobox bleibt es bei 2 Stehen



    VB.NET-Quellcode

    1. Private Sub CB_Betonkauf_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CB_Betonkauf.SelectedIndexChanged
    2. If CB_Betonkauf.SelectedItem = "1 Palette (42 Sack) = 42 Sack" Then
    3. Label_Stellplaetze_Beton.Text = "1 Stellplatz"
    4. Label_Lieferzeit_Beton.Text = "10 Minuten"
    5. Label_Kosten_Beton.Text = "117 ,- €"
    6. ElseIf CB_Betonkauf.SelectedItem = "4 Paletten (à 42 Sack) = 168 Sack" Then
    7. Label_Stellplaetze_Beton.Text = "4 Stellplatz"
    8. Label_Lieferzeit_Beton.Text = "30 Minuten"
    9. Label_Kosten_Beton.Text = "468 ,- €"
    10. ElseIf CB_Betonkauf.SelectedItem = "6 Paletten (à 42 Sack) = 252 Sack" Then
    11. Label_Stellplaetze_Beton.Text = "6 Stellplatz"
    12. Label_Lieferzeit_Beton.Text = "40 Minuten"
    13. Label_Kosten_Beton.Text = "702 ,- €"
    14. ElseIf CB_Betonkauf.SelectedItem = "10 Paletten (à 42 Sack) = 420 Sack" Then
    15. Label_Stellplaetze_Beton.Text = "10 Stellplatz"
    16. Label_Lieferzeit_Beton.Text = "60 Minuten"
    17. Label_Kosten_Beton.Text = "1.117 ,- €"
    18. End If
    19. End Sub
    20. Private Sub BetonKaufen_Button_Click(sender As Object, e As EventArgs) Handles BetonKaufen_Button.Click
    21. If CB_Betonkauf.SelectedItem = "1 Palette (42 Sack) = 42 Sack" AndAlso CB_VerfuegbareFahrzeuge.SelectedIndex() = 0 Then
    22. If CB_Betonkauf.SelectedIndex() < 0 Then
    23. MessageBox.Show("Bitte wähle die Menge aus.", "Information")
    24. Exit Sub
    25. End If
    26. If CB_VerfuegbareFahrzeuge.SelectedIndex() < 0 Then
    27. MessageBox.Show("Bitte wähle ein Fahrzeug aus.", "Information")
    28. Exit Sub
    29. End If
    30. If SprinterVerfügbar = 0 Then
    31. MessageBox.Show("Leider ist kein Fahrzeug verfügbar.", "Information")
    32. Exit Sub
    33. End If
    34. If FirmenKontoSumme < 117 Then
    35. MessageBox.Show("Du hast zu wenig Geld.", "Information")
    36. Exit Sub
    37. End If
    38. If MessageBox.Show("Möchtest du wirklich 42 Sack Beton kaufen für 117 ,- €?", "Information", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
    39. 'Dim t = New BuildTimerObject("1 Palette Kaufen " & Now.ToLongTimeString, EineBetonKaufen, Me.FlowPanel1)
    40. 'AddHandler t.Ladenfertig, AddressOf FertigEineBetonKaufen
    41. '_timers.Add(t)
    42. 'BetonKaufen_Button.Enabled = False
    43. CB_Betonkauf.SelectedIndex = -1
    44. CB_VerfuegbareFahrzeuge.SelectedIndex = -1
    45. Label_Stellplaetze_Beton.Text = String.Empty
    46. Label_Lieferzeit_Beton.Text = String.Empty
    47. Label_Kosten_Beton.Text = String.Empty
    48. FirmenKontoSumme -= 117
    49. Label_fKonto.Text = Format(Val(FirmenKontoSumme), "###,#0.00 €").ToString
    50. LkwVerbrauchGesamt += 1
    51. Label_Lkwverbrauch_Gesamt.Text = Format(Val(LkwVerbrauchGesamt), "###,#0").ToString
    52. SprinterVerfügbar -= 1
    53. Label_SprinterVerfuegbar.Text = Format(Val(SprinterVerfügbar), "###,#0").ToString
    54. SprinterUnterwegs += 1
    55. Label_SprinterUnterwegs.Text = Format(Val(SprinterUnterwegs), "###,#0").ToString
    56. End If
    57. End If


    Oben im Load hab ich nur noch:

    VB.NET-Quellcode

    1. CB_VerfuegbareFahrzeuge.Items.Add(Label_SprinterVerfuegbar.Text & " Sprinter (à 1 Palette) Verfügbar")

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VBHunter“ ()

    @VBHunter

    RodFromGermany schrieb:

    Machst Du zunächst Option Strict On.
    Bist Du beratungsresistent?
    msdn.microsoft.com/de-de/libra…lecteditem(v=vs.110).aspx
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @VBHunter Deine Herangehensweise ist falsch.
    Willst Du, wenn es neue Palettensätze gibt, jedes Mal Dein Programm ändern?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @VBHunter

    Du vergleichst andauernd Äpfel mit Birnen. Du musst verstehen was ein Datentyp ist. Du kannst in der Realität auch nicht eine Zahl mit einem Satz (string) vergleichen. Ebenso nicht einen String mit einem Boolean (Wahrheitswert). Wenn du forlaufend ohne Option Strict On programmierst, wirst du diese nicht type-safe Art zu programmieren nie wieder rausbekommen.

    Ich hab es ja jetzt soweit gelöst, nur habe ich es nicht geschafft es in eine combobox zu bekommen. Deshalb habe ich improvisiert.
    Habe jetzt eine Combobox genommen die eine Fahrzeugliste hat und die Verfügbarkeit steht dann daneben in einen Label.

    @ErfinderDesRades
    zu deiner Frage.... Ich würde sagen keinen da ich es nicht als Datentyp deklariert habe oder?