Textbox nur Zahlen eingeben, aber...

  • VB.NET

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

    Textbox nur Zahlen eingeben, aber...

    Guten Abend,

    ich hab da mal ein vermutliches Anfängerproblem:
    Eine Textbox hat einen Zahlenwert voreingetragen. Dieser soll eventuell geändert werden können. Um nur Zahleneingaben machen zu können, habe ich das siehe unten abgefangen. Zu Kontrollzwecken hatte ich mir ein Label auf das Form gelegt und bemerkt, dass der erste Tastendruck ignoriert und beim zweiten Drücken die jeweils vorige Zahl aufs Label kommt?! (Also 1 tippen, nix passiert auf dem Label, 2 tippen, 1 kommt aufs Label, 3 drücken, 2 kommt aufs Label...)
    Gibts wahrscheinlich nur bei mir?!
    Kann jemand dieses Phänomen erklären oder besser noch beseitigen? ;(

    VB.NET-Quellcode

    1. Public Class form2
    2. Private Sub form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. order(35) = 10 'testwert
    4. TextBox1.Text = order(35)
    5. Label8.Text = TextBox1.Text
    6. End Sub
    7. Private Sub TextBox1_KeyPress(ByVal sender As Object, _
    8. ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    9. Handles TextBox1.KeyPress
    10. If Not "1234567890".Contains(e.KeyChar) Then
    11. e.Handled = True
    12. End If
    13. order2(35) = TextBox1.Text
    14. Label8.Text = order2(35)
    15. End Sub
    16. '-------------------------------------------------------------
    17. End Class

    VB.NET-Quellcode

    1. Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    2. Select Case e.KeyCode
    3. Case Keys.D0 To Keys.D9, Keys.Back 'Nur Ziffern und Rücktaste
    4. e.SuppressKeyPress = False
    5. Case Else
    6. e.SuppressKeyPress = True
    7. End Select
    8. End Sub


    Funktionieren tuts schonmal...^^

    // Naja, fast. Ziffern mit Shift, also !"§$%&/()= werden auch geschrieben. *grummel*


    //Nochmal Edit, der funktioniert besser:

    VB.NET-Quellcode

    1. Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    2. If "1234567890".Contains(Chr(e.KeyCode)) Then
    3. e.SuppressKeyPress = False
    4. TextBox1.AppendText(Chr(e.KeyValue))
    5. Label1.Text &= Chr(e.KeyValue)
    6. End If
    7. e.SuppressKeyPress = True
    8. End Sub

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