Doppelt ausgeführtes Textbox_Keyup-Event erzeugt Fehler VB2010, Express

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Junior.

    Doppelt ausgeführtes Textbox_Keyup-Event erzeugt Fehler VB2010, Express

    Hallo Forum!

    Ich habe vor etwa einer Woche angefangen mich zu Privaten Zwecken in VB einzuarbeiten und wollte erst einmal loswerden, das mir dieses Forum bei einigen zu klärenden Fragen toll weitergeholfen hat und ich mich aus diesem Grund nun Registriert habe, um selbst ggf. kompetente Hilfe bekommen zu können. :)

    Ich habe eine einfache Form gebastelt, in der ich aus einigen Technischen (Ausschließlich Numerischen) Werten per hinterlegter Formel ein Ergebnis bekommen möchte. Das funktioniert auch gut, jedoch bekomme ich beim zweifachen Triggern der jeweiligen Berechnungen eine Fehlermeldung. Ich denke das Problem wird sein, das ich die Ergebnisse nicht nur numerisch, sondern auch mit Einheitszeichen darstellen möchte:

    VB.NET-Quellcode

    1. TextBox1.Text = TextBox1.Text & " W"


    Ist der Fehler, das wenn ich doppelt Triggere, z.B. Textbox1.Text garnicht berechnet werden kann, da der Inhalt nicht ausschließlich Numerisch ist? Gibt es eine möglichkeit den Zusatz " W" bei einem zweiten Triggern zur berechnung zu entfernen? :S

    Da ich in anderen Threads oft gesehen habe, das ein gesamter Code für die Handelung benötigt wird, um ggf. Hilfestellung zu geben, tue ich es also mal nach. :)

    VB.NET-Quellcode

    1. ''GROUPBOX4 Heizmitteltemperatur / Spreizung
    2. Private Sub TextBox22_Keyup(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox22.KeyUp
    3. If e.KeyCode = Keys.Enter Then
    4. TextBox21.Focus()
    5. End If
    6. End Sub
    7. Private Sub TextBox21_Keyup(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox21.KeyUp
    8. If e.KeyCode = Keys.Enter Then
    9. TextBox20.Focus()
    10. End If
    11. End Sub
    12. Private Sub Textbox20_Keyup(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox20.KeyUp
    13. If e.KeyCode = Keys.Enter Then
    14. TextBox24.Text = Math.Round((CDbl(TextBox22.Text.Replace(".", ",")) / (CDbl(TextBox21.Text.Replace(".", ",")) * CDbl(TextBox18.Text.Replace(".", ",")))), 2)
    15. TextBox19.Text = Math.Round((CDbl(TextBox20.Text.Replace(".", ",")) - CDbl(TextBox24.Text.Replace(".", ","))), 3)
    16. TextBox23.Text = Math.Round(((((CDbl(TextBox20.Text.Replace(".", ",")) + (CDbl(TextBox19.Text.Replace(".", ",")))) / 2))), 2)
    17. TextBox22.Text = TextBox22.Text & " W"
    18. TextBox21.Text = TextBox21.Text & " Kg/h"
    19. TextBox20.Text = TextBox20.Text & " °C"
    20. TextBox19.Text = TextBox19.Text & " °C"
    21. TextBox18.Text = TextBox18.Text & " W/KgK"
    22. TextBox23.Text = TextBox23.Text & " °C"
    23. TextBox24.Text = TextBox24.Text & " K"
    24. End If
    25. End Sub


    Vorab schonmal vielen Dank und ein schönes Wochenende! - Junior :)
    Hi und zunächst mal wilkommen im Forum^^
    Also zunächst solltest du Option Strict On machen. Dann kannst du die Zeichen wegmachen, indem du Split(rest wird dann in ein Array gepackt) oder mit Trim. Mit Regex geht es glaub ich auch, ber ich will mal nichts falsches sagen, da ich mich Regex nicht auskenne. Dann solltest du auch mal Convert benutzen. Zum Beispiel:

    VB.NET-Quellcode

    1. ​Dim Text as String = ¨37°C¨
    2. Dim Text2 as String = ¨50m¨
    3. Dim Zahl as Integer
    4. Dim Zahl2 as Integer
    5. Dim zwischen() as String
    6. zwischen =Text.Split(¨°¨c)
    7. Zahl = Convert.ToInt32(zwischen(0))
    8. Zahl2 = Text2.Trim(¨m¨c)
    9. Messagebox.Show(Zahl & vbCrlf & Zahl2)

    Das sollte ungefähr hinhauen. LG
    Willkommen im Forum. :thumbup:

    Junior schrieb:

    nicht ausschließlich Numerisch ist?
    Der Inhalt einer TextBox ist ausschließlich ein String, deswegen konvertierst Du ihn ja auch in ein Double.
    Bevor Du weiter machst:
    Trenne sorgfältig GUI und Daten.
    Konvertiere die numerischen Strings Deiner Textboxen in Variablen vom Typ Double und rechne mit diesen.
    Da lassen sich Fehler wesentlich einfacher aufspüren als in Deinen zusammengesetzten Formelausdrücken.
    Wenn Du Einheiten zu TextBox-Werten anzeigen willst, stelle sie in einem Label neben der TextBox dar und Du hast viel weniger Probleme.
    Nimm ein NumericUpDown-Control und Du hast einen numerischen Wert.
    Oder Du suchst nach dem NumericTextBox-Control, das hilft Dir auch weiter.
    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!