VB Problem Mehrfach If in Verbindung mit ListBox und Button

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    VB Problem Mehrfach If in Verbindung mit ListBox und Button

    Hallo,

    ich habe folgendes Problem, wir müssen fürs Studium ein kleines Programm schreiben, es steht soweit aber es gibt noch ein kleines Hindernis.

    Ich habe im ersten Teil des Programmes 3 ListBoxen, wo man den Fahrzeugtyp, die Ausstattung und den Motor wählen kann, danach geht man dann auf den Button "Fahrzeugpreis berechnen". Der Button "Fahrzeugpreis berechnen" soll aber erst "Enabled = True" sein wenn in allen Listboxen ein was ausgewählt wurde.

    Der bisherige Code lautet:

    "Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged

    If ListBox1.SelectedIndex And ListBox2.SelectedIndex And ListBox3.SelectedIndex = False Then

    Button1.Enabled = False

    Else

    Button1.Enabled = True

    End If

    End Sub"


    Das Problem ist wenn ich mit Listbox2 oder ListBox3 anfange dann funktioniert es, wähle ich aber zuerst einen Wert in ListBox1 aus, dann erscheint sofort der Button, was ja nicht sein soll.

    Wäre super wenn mir jemand helfen können!

    Danke
    du musst alle 3 handler in die sub reinpacken
    Handles ListBox1.SelectedIndexChanged, Handles ListBox2.SelectedIndexChanged, Handles ListBox3.SelectedIndexChanged


    VB.NET-Quellcode

    1. Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox2.SelectedIndexChanged, ListBox3.SelectedIndexChanged, ListBox4.SelectedIndexChanged
    2. If Not ListBox2.SelectedIndex = -1 AndAlso Not ListBox3.SelectedIndex = -1 AndAlso Not ListBox4.SelectedIndex = -1 Then
    3. Button22.Enabled = True
    4. Else
    5. Button22.Enabled = False
    6. End If
    7. End Sub

    Hier könnte meine Signatur stehen.

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

    @mox @lenuamred Dreht mal die Logik um, da kann man den Code sogar intuitiv erfassen:

    VB.NET-Quellcode

    1. Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox2.SelectedIndexChanged, ListBox3.SelectedIndexChanged, ListBox4.SelectedIndexChanged
    2. If ListBox2.SelectedIndex >= 0 AndAlso ListBox3.SelectedIndex >= 0 AndAlso ListBox4.SelectedIndex >= 0 Then
    3. Button22.Enabled = True
    4. Else
    5. Button22.Enabled = False
    6. End If
    7. End Sub

    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Und der nächste Schritt, wär dann das zusammenfassen:

    VB.NET-Quellcode

    1. Button22.Enabled = ListBox2.SelectedIndex >= 0 AndAlso ListBox3.SelectedIndex >= 0 AndAlso ListBox4.SelectedIndex >= 0

    abgesehen davon, dass Button22 ein nicht gerade aussagekräftiger Name ist
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    aber ist doch fast Menschensprache:
    "Button22.Enabled ist, wenn alle(Listbox1, Listbox2, Listbox3) einen .SelectedIndex>=0 haben"

    Und ist schön zu warten, also wenn weitere Listboxen hinzukommen, oder wenn welche wegsollen...

    Aber du hast recht: Ist hier eiglich offTopic, weil eine fortgeschrittenere Diskussion - ich find eiglich selbst, mit post#5 ist einem Gelegenheits-Programmierer am besten gedient.