VB.net | IF abfrang geht ned

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    VB.net | IF abfrang geht ned

    Hallo .. ich habe kleines Problem ..versucht mich zurzeit an ein If abfrang .. wann ich das tool ausführen komm nun der Preis von BMX .. was ist die Lösung ^^

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. If TextBox1.Text = "BMX" Or "509" Then
    4. Label3.Text = "500 $"
    5. Elseif
    6. TextBox1.Text = "Mountain Bike" Or "510" Then
    7. Label3.Text = "600 $"
    8. Else
    9. TextBox1.Text = "Faggio" Or "462" Then
    10. Label3.Text = "900 $"
    11. Else
    12. TextBox1.Text = "BF-400" Or "581" Then
    13. Label3.Text = "3.500 $"
    14. End If
    15. End Sub
    16. End Class


    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Das kann so nicht funktionieren. Du hast erstmal zu viele Else, d.h. das müsste eher Else If sein.
    Dann ist die logische Verknüpfung so falsch. Verwende statt Or lieber OrElse und dann macht man das so:
    If TextBox1.Text = "BMX" OrElse TextBox1.Text = "509" Then

    Benenne außerdem mal Deine Controls richtig. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Lucky01 Willkommen im Forum. :thumbup:
    Gib all Deinen Projekten Option Strict On, da meckert bereits der Compiler und sagt Dir, was ihm nicht gefällt.
    Visual Studio - Empfohlene Einstellungen
    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!
    Hi :) Das sieht ja schon irgendwie nach was Größerem aus. @Trade hat schon recht. Nur wenn du etwas "Größeres" Machst mit mehr als 10 (Else)If's dann würde ich stat ​If ein ​Select Case benutzen. Ist 1. Übersichtlicher und 2. Einfacher. Hier nur ein Beispiel:

    VB.NET-Quellcode

    1. ​Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.click
    2. Select Case TextBox1.Text
    3. Case "Text01"
    4. MsgBox("Hallo1")
    5. Case "Text02"
    6. MsgBox("Hallo2")
    7. End Case
    8. End Sub
    MfG, Martin
    Was verstehst Du unter End Clase? Wenn sonstige Fälle abgedeckt werden sollen, die noch nicht explizit abgedeckt wurden (wie z.B. Case "BMX"), dann musst Du Case Else verwenden. Ansonsten wird das Select-Konstrukt durch End Select abgeschlossen, was Du schon hast.
    btw: Wie schon erwähnt wurde: Or => OrElse

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    entweder bin ich einfacher nun zu dumm dafür oder checker es einfacher. ned sry

    Ein Ausnahmefehler des Typs "System.InvalidCastException" ist in Microsoft.VisualBasic.dll aufgetreten.

    Zusätzliche Informationen: Ungültige Konvertierung von der Zeichenfolge BMX in Typ Boolean.

    ---

    VB.NET-Quellcode

    1. ​Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Select Case TextBox1.Text
    4. Case "BMX" OrElse "509"
    5. Label3.Text = "500 $"
    6. End Select
    7. End Sub
    8. End Class
    Eiglich braucht man dir nicht weiter helfen.
    Weil du ignorierst den wichtigsten Hinweis dieses Threads: Option Strict On (Post#3)
    Und das hätte dir auch direkt diesen dummen Fehler erspart.

    Also Obacht: Bei allem, was nach "Beratungsresistenz" aussieht, reagieren viele Ratgeber leicht unfreundlich oder mit Rückzug - weil hat ja keinen Zweck.

    (Und nu willich für diesen etwas unfreundlichen Post auch ein "Hilfreich", denn er ist wirklich hilfreich ;) .
    Das ist für Forum-Einsteiger nämlich garnet so einfach, sich darauf einzustellen, wie Forum-Kommunikation funktioniert, und dabei zu helfen ist Absicht dieses Posts)

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

    If Option Strict On Then

    look @ the MSDN example, 'cause then it works.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Lucky01 Du musst die Cases alle einzeln aufzählen:
    Click mal auf Select und drück auf F1 (Hilfe), da landest Du bei der MSDN.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Select Case TextBox1.Text
    4. Case "BMX", "509"
    5. Label3.Text = "500 $"
    6. End Select
    7. End Sub
    8. End Class

    @ErfinderDesRades Der Code ist bereits On, er versteht lediglich die Meldung nicht.
    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!

    RodFromGermany schrieb:

    @ErfinderDesRades Der Code ist bereits On, er versteht lediglich die Meldung nicht.
    Nö.
    Dieses hier:

    Lucky01 schrieb:

    Ein Ausnahmefehler des Typs "System.InvalidCastException" ist in Microsoft.VisualBasic.dll aufgetreten.

    Zusätzliche Informationen: Ungültige Konvertierung von der Zeichenfolge BMX in Typ Boolean.
    ist definitiv eine Laufzeit-Exception und nicht die CompilerMeldung, die bei Strict On hier aufträte.
    Ob Off oder On.
    Ein bisschen eigenständigkeit steck in Programmieren auch drinn. Vielleicht liest du mal was die IDE dir sonst noch ausgibt. Weil bei Case nie ein And, Or oder OrElse Da Case immer nur mit 1 Eintrag zu Frieden ist. In einer Case können 2 Einträge ja. Das löst man dann aber mit ein ,. Habs jetzt nochmal mit Eigenen Worten verfasst, was @RodFromGermany geschrieben hat.
    MfG, Martin

    ErfinderDesRades schrieb:

    Nö.
    Rischdisch.

    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!
    @Lucky01 Eine CheckBox hat keine Zahl zum Addieren, sondern einen Boolean Zustand je nach Check aus der Menge { True, False }.
    Wenn Du über eine GUI numerische Werte in Dein Programm bekommen willst, musst Du einweder ein NumericUpDown oder eine TextBox nehmen.
    Der Wert vom NumericUpDown ist vom Typ Decimal, kannst Du einfach konvertieren: CInt(NumericUpDown1.Value).
    Bei der TextBox ist das etwas komplizierter, denn da könnte "Roulade mit Klößen" drinne stehen (Endlich wieder :thumbsup: ).
    Da musst Du mit Integer.TryParse(...) testen, ob der String ühaupt konvertierbar ist.
    Wenn Du dann fertig gerechnet hast, kannst Du das Ergebnis einfach ausgeben: Label1.Text = Resultat.Tostring().
    Also:
    Trenne GUI und Daten.
    Die GUI ist dafür da, Werte entgegenzunehmen und Ergebnisse anzuzeigen, gerechnet wird mit numerischen Datentypen!
    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!
    @Lucky01 Wenn du ernsthaft vorhast programmieren zu lernen, würde ich dir dringend empfehlen ein Buch zum Thema zu kaufen. Da werden dir die Grundlagen strukturiert vermittelt. Andernfalls wurschtelst du dich halt so durch, was Langfristig wohl eher nicht von Erfolg gekrönt sein wird.

    P.s. Ich hab das damals nen Buch gekauft und sorgfältig durchgearbeitet. Geschadet hat es nicht :)
    "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