Nur Zahlen Zulassen

ganjin

Mitglied
Hallo,
Ich habe zwar gegoogelt und auch sofort was gefunden,
aber das funktionierte leider nicht.

Also ich möchte in einer Textbox nur Zahlen (0-9) und die Backspace taste zulasssen.

Würde mich sehr über Hilfe freuen.
Viele Grüße:)
 
C#:
private void textBox1_TextChanged(object sender, EventArgs e)
{
    if(Regex.IsMatch(textBox1.Text, "^[0-9 ]*$")==false)
       textBox1.Text=string.Empty;
}
Beim Ereignis TextChanged der TextBox wird über Regulare Expression geprüft ob sich im String
- kein Zeichen
- oder nur Zahlen und Leerzeichen befinden
 
Zuletzt bearbeitet von einem Moderator:
Wie heist das in basic .net?

Code:
Private Sub times_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles times.TextChanged

        If (Regex.IsMatch(TextBox1.Text, "^[0-9 ]*$")) = False Then
            TextBox1.Text = String.Empty
        End If
    End Sub

Der Name "Regex" wurde nicht deklariert.
 
Zuletzt bearbeitet:
Ganz oben drüber:

Code:
Imports System.Text.RegularExpressions

Das sollte dir aber Visual Studio selbst vorschlagen. Außerdem kannst du die Klammer nach If wegmachen... Das End If kann auch entfallen, wenn du "TextBox1.Text = String.Empty" in die selbe Zeile direkt nach Then schreibst.
Anstatt "= False" darfst du auch einfach "If Not" schreiben.

Code:
If Not Regex.IsMatch(TextBox1.Text, "^[0-9 ]*$") Then TextBox1.Text = String.Empty

Das Problem dabei ist jetzt aber, dass die TextBox bei Eingabe eines falschen Zeichens einfach geleert wird. Du könntest anstattdessen besser einen ErrorProvider eine Meldung anzeigen lassen.
 
Schau mal,
Hiermit hat jemand bestimmte zeichen nicht erlaubt:
Code:
    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim Zeigerpos As Integer = TextBox1.SelectionStart
        Dim Replace As String = System.Text.RegularExpressions.Regex.Replace(TextBox1.Text, "[^a-zA-Z0-9ß!\?\s-_.,:;§$€%&=#*@<>)(°/<>´´``äüö]", "")
        If Replace.Length < TextBox1.Text.Length Then
            TextBox1.Text = Replace
            TextBox1.SelectionStart = Zeigerpos
        End If
    End Sub

Das geht auch, und nur das falsche zeichen geht raus.
Wie mach ich dass das nur zahlen erlaubt sind?
 
Code:
        Dim Replace As String = System.Text.RegularExpressions.Regex.Replace(TextBox1.Text, "[^0-9]", "")
Es werden alle Zeichen durch einen leer string ersetzt außer Zahlen.
 
Code:
    Private Sub times_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles times.TextChanged
        Dim Zeigerpos As Integer = times.SelectionStart
        Dim Replace As String = System.Text.RegularExpressions.Regex.Replace(TextBox1.Text, "[^0-9]", "")
        If Replace.Length < times.Text.Length Then
            times.Text = Replace
            times.SelectionStart = Zeigerpos
        End If
    End Sub
 
du prüfst mit TextBox1.Text setzt aber times.Text und wertest auch selbst das TextChanged Ereignis von times aus.
Ev. die Controls vertauscht?
 

Neue Beiträge

Zurück