Rubrik: TextBox, ListBox & ComboBox | 07.01.09 |
Nur bestimmte Zeichen in Textbox zulassen (VB 2005, VB 2008) VB-Version: VB2005, VB2008 | ||
Views: 47.364 |
Textboxen werden oft verwendet um bestimmte Daten vom Benutzer zu bekommen. Hier ist es manchmal nützlich, nur bestimmte Eingaben zuzulassen.
Um nur die Eingabe von Zahlen zuzulassen, können Sie die IsNumeric-Funktion verwenden:
Private Sub TextBox1_TextChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles TextBox1.TextChanged If Not IsNumeric(TextBox1.Text) Then MessageBox.Show("Bitte nur Zahlen eingeben.") End If End Sub
Die IsNumeric-Funktion lässt auch die Dezimaltrennzeichen Punkt und Komma zu und ist für Berechnungen geeignet.
Sollen lediglich Buchstaben eingegeben werden, dann hilft diese Funktion weiter:
Public Function IsLetter(ByVal Text As String) As Boolean For Each ch As Char In Text If Not Char.IsLetter(ch) Then Return False Next Return True End Function
Der Aufruf könnte dann so erfolgen:
Private Sub TextBox1_TextChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles TextBox1.TextChanged If Not IsLetter(TextBox1.Text) Then MessageBox.Show("Bitte nur Buchstaben eingeben.") End If End Sub
Sehr flexibel ist die Abfrage der Eingabe über die Ascii-Codes. Da jedes Zeichen einen ganz bestimmten Ascii-Code hat, kann hier genau vorgegeben werden, welche Zeichen verwendet werden dürfen. Hier ein Beispiel:
Private Sub TextBox1_KeyPress(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Select Case Asc(e.KeyChar) Case 48 To 57, 8, 32 ' Zahlen, Backspace und Space zulassen Case Else ' alle anderen Eingaben unterdrücken e.Handled = True End Select End Sub
Eine Tabelle der Ascii-Codes finden Sie in unserer Rubrik Befehlsreferenz oder in der MSDN unter dem Stichwort "ASCII-Zeichensatz".
Dann gibt es natürlich auch noch die Möglichkeit, alles in Groß- oder Kleinbuchstaben zu verwandeln. Hierzu im TextChanged-Ereignis einfach eine dieser Codezeilen einfügen:
TextBox1.CharacterCasing = CharacterCasing.Upper ' nur Großbuchstaben TextBox1.CharacterCasing = CharacterCasing.Lower ' nur Kleinbuchstaben