Buttonaktion wird nicht ausgeführt.

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von BiedermannS.

    Buttonaktion wird nicht ausgeführt.

    Guten Abend.

    Ich habe das Problem, dass mein Button nichts ausführt sobald ich klicke, obwohl ich es im Code deklariert habe.
    Das muss definitiv an der If-Schleife liegen, da wenn ich diese anders schreibe, der Button funktioniert. Dadurch ist das Programm dann aber fehlerhaft.


    Vielen Dankk schonmal im voraus.

    Leo

    Edit by der_Kurt:
    Quellcode formatiert

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnStart.Click
    2. 'Nur Zahlenwerte können eingetragen werden.
    3. If tbMasse.Text Is Nothing Then
    4. MsgBox("Bitte geben sie Zahlenwerte ein!")
    5. If tbEfeld.Text Is Nothing Then
    6. MsgBox("Bitte geben sie Zahlenwerte ein!")
    7. If tbRadius.Text Is Nothing Then
    8. MsgBox("Bitte geben sie Zahlenwerte ein!")
    9. 'Nur Zahlenwerte größer als (-250) könen eingegeben werden.
    10. If tbEfeld.Text < -250 Then
    11. MsgBox("Bitte geben sie einen Zahlenwert der größer als -250 ist, für die Stärke des E-Feldes ein!")
    12. 'Nur positive Zahlenwerte können eingetragen werden.
    13. If tbMasse.Text < 0 Then
    14. MsgBox("Bitte geben sie positive Zahlenwerte für die Dichte ein!")
    15. If tbRadius.Text < 0 Then
    16. MsgBox("Bitte geben sie positive Zahlenwerte für das Volumen ein!")
    17. If Not IsNumeric(tbEfeld.Text) Then
    18. MsgBox("Bitte nur Zahlenwerte eingeben!")
    19. If Not IsNumeric(tbMasse.Text) Then
    20. MsgBox("Bitte nur Zahlenwerte eingeben!")
    21. If Not IsNumeric(tbRadius.Text) Then
    22. MsgBox("Bitte nur Zahlenwerte eingeben!")
    23. Else
    24. lblSolver.Text = "Solver"
    25. cbSolver.Visible = True
    26. Werte_verarbeiten()
    27. TabelleUndGraphErstellen()
    28. Solver()
    29. End If
    30. End If
    31. End If
    32. End If
    33. End If
    34. End If
    35. End If
    36. End If
    37. End If
    38. End Sub
    Dateien
    • Form1.Designer.vb

      (27,2 kB, 187 mal heruntergeladen, zuletzt: )
    • Form1.vb

      (15,23 kB, 130 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Leopath“ ()

    Füg mal bitte Deinen Code anständig ein. Da wird man ja irre beim lesen.

    EDIT:

    vb-paradise.de/board/boarddisk…en-was-ist-damit-gemeint/

    Lies das mal wegen den Tags....

    Zu Deinem Code...

    Du kannst einen String nicht auf Nothing prüfen. Wenn Du prüfen willst, ob ein String nicht leer ist, dann mach es so...

    VB.NET-Quellcode

    1. If Me.TextBox3.Text = "" Then
    2. End If


    oder

    VB.NET-Quellcode

    1. If Me.TextBox3.Text = String.Empty Then
    2. End If


    Ausserdem: OPTION STRICT ON! Und Du tust Dir mit Deinen unzähligen Verschachtelungen keinen Gefallen. Solltest Du evtl. überdenken, sonst wirst Du irre, wenn Du nen Fehler suchst.

    Wenn Du mit IsNumeric() prüfst, können trotzdem Fehler auftreten, wenn nämlich der Datentyp trotzdem nicht passt.

    Besser:

    VB.NET-Quellcode

    1. Integer.TryParse()
    2. Double.TryParse()
    3. .....


    Dann hast Du immer Gewissheit, dass auch das rauskommt, was Du Dir vorstellst.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „SpaceyX“ ()

    Du schließt mit End If ganz am Ende ab. Deshalb: Wenn "tbMasse.Text Is Nothing" nicht zutrifft, gehts schon gaanz unten weiter.
    Tipp: Haltepunkt setzen, und den Code zeilenweise abarbeiten. Dieses Problem kann mit den Boardmitteln von Visual Studio ganz leicht ausgemacht werden.
    Du hast Dir ja wirklich sehr sehr viel Mühe gegeben. Sieht ziemlich kompliziert aus das Ganze. Und gerade darum. Bei Projekten, die soviel mit Zahlen Arbeiten, soviele Berechnungen ausführen, ist es geradezu ein MUSS OPTION STRICT ON zu haben. Das merk Dir!

    Dein Code arbeitet genau so, wie von Dir programmiert. Deine tbMasse hat einen Wert, und zwar 9.109g (ein Elektron hat 9 Gramm?), wenn ich die Form starte und dieser ist fix, hängt wohl von der Combobox ab, was ich da auswähle.

    Also ist tbMasse.Text nie String.Empty, somit wird die erste If-Abfrage False und die anderen werden gar nicht erst angetastet.

    Ich find da keinen Fehler, ausser, naja, siehe oben.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Ich müsste noch hinzufügen, dass ich blutiger Anfänger bin, was VB.Net angeht.
    Ich versuche mir natürlich einiges anzueignen, aber kann das meiste nur mit begrenzten Mitteln.
    Dein Code arbeitet genau so, wie von Dir programmiert. Deine tbMasse hat einen Wert, und zwar 9.109g (ein Elektron hat 9 Gramm?), wenn ich die Form starte und dieser ist fix, hängt wohl von der Combobox ab, was ich da auswähle.

    Also ist tbMasse.Text nie String.Empty, somit wird die erste If-Abfrage False und die anderen werden gar nicht erst angetastet.
    Ich habe das in dem Code deklariert, wie das Programm diese Information verarbeiten soll.
    Die erste Combobox ist zum einstellen und wenn man auf sonstige stellt, dann kann man in den Textboxen eigene Werte eingeben.
    Wenn ich das alles mit "ElseIf" schreibe, kommt eine Fehlermeldung wenn ich nicht ausfülle.
    microsoft.com/germany/msdn/akt…005dasentwicklerbuch.mspx

    Da haste viel zu lesen.

    Kannst ja schon mehr, als manch anderer hier. Darum zieh Dir das Buch rein, dann haste fundiertes Wissen, was Du nach Belieben ausbauen kannst.

    EDIT: Link nochmal geändert, war der zum 2008 Buch. Bitte das 2005 durcharbeiten.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Kommt das Programm überhaupt in Deiner Prozedur an?

    der_Kurt schrieb:

    Haltepunkt setzen, und den Code zeilenweise abarbeiten.
    Alles andere kannst Du spekulieren, wenn Du dagewesen bist.
    Hast Du die Button_Click-Prozedur im Designer erstellt? Dein Kenntnisstand reicht noch nicht aus, es nicht so zu machen :!:
    Wenn nein, doppelklicke im Designer auf den Button und Du siehst die Prozedur, wo der Code hingehört.
    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!
    Da weiß man gar nicht wo man anfangen soll...

    Erstens:
    IsNumeric gibt auch false zurück, wenn der string leer ist

    Zweitens:
    Fehler mit gleicher Ausgabe kannst du zusammenfassen mit AndAlso oder OrElse

    Drittens:
    Da das Ganze Linear durchläuft, kannst du ElseIF verwenden

    Viertens:
    Ganz oben in den Code

    VB.NET-Quellcode

    1. Option Strict On

    Texte werden nicht mit Zahlen verglichen. Vorher den Text mit Integer.Parse umwandeln

    Fünftens:
    Unbedingt die Grundlagen nochmal ordentlich lernen.
    Das Entwicklerbuch von Microsoft gibts als gratis PDF Download und ist ein gutes Nachschlagewerk

    Spoiler anzeigen
    So sieht das Ganze "bereinigt" aus:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnStart.Click
    2. If Not IsNumeric(tbMasse.Text) AndAlso Not IsNumeric(tbEfeld.Text) AndAlso Not IsNumeric(tbRadius) Then
    3. MsgBox("Bitte geben sie Zahlenwerte ein!")
    4. ElseIf Integer.parse(tbEfeld.Text) < -250 Then
    5. MsgBox("Bitte geben sie einen Zahlenwert der größer als -250 ist, für die Stärke des E-Feldes ein!")
    6. ElseIf Integer.parse(tbMasse.Text) < 0 Then
    7. MsgBox("Bitte geben sie positive Zahlenwerte für die Dichte ein!")
    8. ElseIf Integer.parse(tbRadius.Text) < 0 Then
    9. MsgBox("Bitte geben sie positive Zahlenwerte für das Volumen ein!")
    10. Else
    11. lblSolver.Text = "Solver"
    12. cbSolver.Visible = True
    13. Werte_verarbeiten()
    14. TabelleUndGraphErstellen()
    15. Solver()
    16. End If
    17. End Sub
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D