Formload - Textchanged - Problem mit Wertezuweisung von Textboxen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von rade23.

    Formload - Textchanged - Problem mit Wertezuweisung von Textboxen

    Hallo,

    Die auf meinem Formular enthaltenen Textboxes sind in den Eigenschaften mit Werten belegt.
    In dem Formular finden Berechnungen statt, sobald ein Wert in einer Textbox geändert wird. (Textbox_TextChanged)

    Problem: Scheinbar werden den Textboxes erst im Formload ihre Werte zugewiesen, somit scheint das Ereignis "Textbox1_TextChanged" zuerst durchzulaufen. Bei einfacher Try-Catch-Nutzung kommt beim Formload eine Fehlermeldung, in den Textboxes sind aber die Werte vorhanden...

    Wie kann ich die Textboxen mit den Wertenfüllen , ohne das schon die Methode "TextChanged" greift? Oder wie bekomme ich es hin, dass beim Formload keine Fehlermeldung angezeigt wird, bei Falscheingabe aber doch?!

    Folgendes ruft keine Fehlermeldung im Formload aus, zeigt aber auch keinen Fehler, wenn die Textboxes leergelassen werden:

    VB.NET-Quellcode

    1. Private Sub txt_Breite1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_Breite1.TextChanged, txt_Breite2.TextChanged
    2. If Not txt_Breite1.Text = "" Then
    3. If Not txt_Breite2.Text = "" Then
    4. Try
    5. txt_Stabdübellänge.Text = CStr(CInt(txt_Breite1.Text) + 2 * CInt(txt_Breite2.Text))
    6. Catch ex As Exception
    7. 'folgende MessageBox zeigt Art des Fehlers!
    8. MsgBox(ex.Message)
    9. End Try
    10. End If
    11. End If
    12. End Sub


    Dankbar für jeglichen Tip...
    Coole Idee, probier ich gleich aus....

    Ich hab mir in der Zwischenzeit folgendes zusammengebastelt:

    VB.NET-Quellcode

    1. rivate Sub txt_Breite1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_Breite1.TextChanged
    2. Select Case txt_Breite1.Text
    3. Case ""
    4. Select Case txt_Breite2.Text
    5. Case ""
    6. txt_Breite1.Text = 0
    7. txt_Breite2.Text = 0
    8. txt_Länge.Text = CStr(CInt(txt_Breite1.Text) + 2 * CInt(txt_Breite2.Text))
    9. Case Else
    10. txt_Breite1.Text = 0
    11. txt_SLänge.Text = CStr(CInt(txt_Breite1.Text) + 2 * CInt(txt_Breite2.Text))
    12. End Select
    13. Case Else
    14. Select Case txt_Breite2.Text
    15. Case ""
    16. txt_Breite2.Text = 0
    17. txt_Länge.Text = CStr(CInt(txt_Breite1.Text) + 2 * CInt(txt_Breite2.Text))
    18. Case Else
    19. Try
    20. txt_Länge.Text = CStr(CInt(txt_Breite1.Text) + 2 * CInt(txt_Breite2.Text))
    21. Catch ex As Exception
    22. 'folgende MessageBox zeigt Art des Fehlers!
    23. MsgBox(ex.Message)
    24. txt_Breite1.SelectAll()
    25. End Try
    26. End Select
    27. End Select
    28. End Sub
    29. Private Sub txt_Breite2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_Breite2.TextChanged
    30. Select Case txt_Breite1.Text
    31. Case ""
    32. Select Case txt_Breite2.Text
    33. Case ""
    34. txt_Breite1.Text = 0
    35. txt_Breite2.Text = 0
    36. txt_Länge.Text = CStr(CInt(txt_Breite1.Text) + 2 * CInt(txt_Breite2.Text))
    37. Case Else
    38. txt_Breite1.Text = 0
    39. txt_Länge.Text = CStr(CInt(txt_Breite1.Text) + 2 * CInt(txt_Breite2.Text))
    40. End Select
    41. Case Else
    42. Select Case txt_Breite2.Text
    43. Case ""
    44. txt_Breite2.Text = 0
    45. txt_Länge.Text = CStr(CInt(txt_Breite1.Text) + 2 * CInt(txt_Breite2.Text))
    46. Case Else
    47. Try
    48. txt_Länge.Text = CStr(CInt(txt_Breite1.Text) + 2 * CInt(txt_Breite2.Text))
    49. Catch ex As Exception
    50. 'folgende MessageBox zeigt Art des Fehlers!
    51. MsgBox(ex.Message)
    52. txt_Breite2.SelectAll()
    53. End Try
    54. End Select
    55. End Select
    56. End Sub


    Aber Deine Lösung ist wohl doch etwas eleganter ;o)