Textbox auf Ziffern oder Buchstaben beschränken

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von MemoAnMichSelbst.

    Textbox auf Ziffern oder Buchstaben beschränken

    Hallo!

    Für das Abschlussprojekt unserer Schule müssen wir ein Verwaltungsprogramm schreiben für eine imaginäre Firma.
    Um das Programm zu verbessern dachten wir an eine Eingabebeschränkung der diversen Textboxen.

    Wir möchten zum Beispiel bei der Form 'Artikel hinzufügen', bei der Textbox 'Mindestbestand' nur Ziffern erlauben.
    Wir dachten zuerst an die Funktion IsNumeric, allerdings kamen dabei einige Fehler auf, die ich weiter unten beschreibe.

    Der Code bisher für die oben erwähnte Textbox sieht im Moment so aus:
    Private Sub TBXmindestbestand_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBXmindestbestand.TextChanged
    If Not (IsNumeric(TBXmindestbestand.Text)) Then
    MsgBox("Eingabe muss numerisch sein!", _
    MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly)
    End If
    End Sub
    Jetzt sind dabei leider einige Fehler aufgetreten: Zunächst wird wirklich jede Eingabe, die nicht eine Zahl ist als falsche Eingabe gewertet (Spacetaste, Löschen etc.) und wir werden deshalb mit Messageboxen zugebombt. Außerdem wird manchmal eine falsche Eingabe nicht als solche erkannt, wenn davor richtige Eingaben vorhanden sind. Um die falsche Eingabe danach zu löschen, haben wir uns überlegt, den tbxmindestbestand.text mit = " " zu deklarieren, die Textbox ist danach auch tatsächlich leer, allerdings kommt dann wieder eine Textbox, die die falsche Eingabe Meldung anzeigt.

    Ich wäre für jede Hilfe sehr dankbar

    gruß
    Variante 1 ein NumericUpDown Control verwenden
    Variante 2 eine MaskedTextBox verwenden
    Variante 3 eine Textbox verwenden und das KeyPress Event auswerten:

    VB.NET-Quellcode

    1. Select Case Asc(e.KeyChar)
    2. Case 48 To 57, 8 ' Zahlen und Backspace
    3. Case Else
    4. e.Handled = True
    5. End Select


    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Willkommen im Forum. :thumbup:
    Probier mal, im Key_Down-Event der Textbox nur numerische Zeichen zuzulassen (da kannste quasi eine Liste der erlaubten Zeichen reinschreiben).
    Allerdings wird da Paste nicht abgedeckt, das geht nur im Text_Changed-Event.
    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!
    von eigenen Bastel-Versuchen würdich abraten - das ist fehlerträchtig. Zur Abschreckung guggemol Alles über Events an, da ist eine selbstgebastelte Richtextbox drin mit Eingabebeschränkung.

    aber wie fichz sagt: NumericUpdown oder MaskedTextbox.

    Wobei für Zahlen eiglich keine Frage besteht: NumericUpdown, sonst nix.
    Wir dachten zuerst an die Funktion IsNumeric, allerdings kamen dabei einige Fehler auf, die ich weiter unten beschreibe.



    Wo denn?
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D