TextBox nur Zahlen oder Buchstaben

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    TextBox nur Zahlen oder Buchstaben

    Hallo,

    ich habe ein paar TextBoxen, die einen sollen nur Buchstaben zulassen und die anderen nur Zahlen.
    Die Länge konnte ich über die Einstellung einstellen.
    Nur leider klappen keine Codes bei mir, welche ich vielleicht schon irgendwo gefunden habe.

    Könnte mir bitte jemand helfen?
    Du kannst im KeyPress Event der TextBox prüfen um welche Zahl/Buchstabe/Sonderzeichen es sich handelt und diesen dann erlauben oder nicht.

    für Zahlen z.B.

    if (!char.IsDigit(e.KeyChar))
    e.Handled = true;
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!
    Hi,

    für nur Zahlen gibt es das NumericUpDown-Control, welches Du bevorzugt nutzen solltest.

    Würde ich so etwas brauchen, dann würde ich mir ein TextBox-Control erzeugen, welches darauf ausgelegt ist, nur bestimmte Eingaben zuzulassen. Rudimentär so:

    VB.NET-Quellcode

    1. Public Class LimitedTextBox : Inherits TextBox
    2. Public Property AllowedCharactes As New List(Of Char)
    3. Public Sub New()
    4. End Sub
    5. Public Sub New(allowedCharacters As List(Of Char))
    6. Me.AllowedCharactes = allowedCharacters
    7. End Sub
    8. Protected Overrides Sub OnKeyPress(e As KeyPressEventArgs)
    9. If AllowedCharactes.Count > 0 Then
    10. If Not AllowedCharactes.Contains(e.KeyChar) Then
    11. e.Handled = True
    12. End If
    13. End If
    14. End Sub
    15. End Class


    Wie @BornToBeRoot schon sagte, ist das KeyPress-Event die richtige Anlaufstelle für sowas. Du kannst dieser besonderen TextBox-Klasse eine Liste übergeben, welche die Chars enthält, die Du zulassen möchtest. In der OnKeyPress-Routine wird hier dann geprüft. Taucht der Character nicht in der Liste auf, so wir dem Control "vorgegaukelt", dass der Tastenanschlag verarbeitet wurde.

    Nutzen kannst Du das dann in Etwa so:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public Sub New()
    3. InitializeComponent()
    4. Me.LimitedTextBox1.AllowedCharactes.AddRange(New Char() {"1"c, "2"c, "3"c})
    5. Me.LimitedTextBox2.AllowedCharactes.AddRange(New Char() {"A"c, "a"c, "b"c})
    6. End Sub
    7. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    8. End Sub
    9. End Class


    Wenn Du magst, dann erzähle mal etwas mehr über Dein generelles Vorhaben, dann findet man evtl. auch eine gute/besser Lösung dafür.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    How to turn OPTION STRICT ON
    Why OPTION STRICT ON
    Zunächst mal Frage: Dein Thread ist mit vb6 gelabelt - ich vermute aber, das ist ein Irrtum, und du arbeitest vb.net.
    Klären könnte man das, wenn du mal eine Methode postest, irgendeine, die auf einen ButtonKlick reagiert.

    Zur Frage:

    lenuamred schrieb:

    Nur leider klappen keine Codes bei mir, welche ich vielleicht schon irgendwo gefunden habe.
    wenn vb.net, dann ist in diesem etwas länglichtn Tut immerhin ein lauffähiges Sample mit einer flexiblen und sicheren Textbox-Restriktion.
    Ist nämlich sehr anspruchsvoll, das wirklich wasserdicht hinzukriegen, dass auch Copy & Paste-Fehleingaben abzuwehrt werden.

    lenuamred schrieb:

    und dort Visual Basic (vb)
    VB6
    oder
    VB.NET
    :?:
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    @lenuamred So was:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
    2. Dim c = e.KeyChar.ToString
    3. If Not Char.IsDigit(c, 0) Then
    4. e.Handled = True
    5. End If
    6. End Sub
    7. Private Sub TextBox2_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox2.KeyPress
    8. Dim c = e.KeyChar.ToString
    9. If c >= "a" AndAlso c <= "z" OrElse c >= "A" AndAlso c <= "Z" Then
    10. Else
    11. e.Handled = True
    12. End If
    13. End Sub
    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).
    VB-Fragen über PN / Konversation werden ignoriert!