copyright 1999 - 2014 by heinz prelle - hannover  - lenbachstraße 42 - www.visual-basic5.de | impressum
Beispiel: VB .Net - TextBox - Nur erlaubte Zeichen zulassen 3

'Hinweis : Erlaubte Zeichen sind:
'Kleinschreibung : a bis z
'Grossschreibung : A bis Z
'Zahleneingabe   : 0 bis 9
'Controls        : Ruecktaste, Pfeiltasten, Loeschen Taste, Enter Taste usw.
'Zeichen die ueber die Zwischenablage eingefuegt wurden und nicht erlaubt sind
'verhindern das Verlassen der TextBox.
'
Option Explicit On
Option Strict On

Imports System.Globalization.UnicodeCategory
Imports System.Globalization

Public Class Form1

    Private TextBox1 As TextBoxOnlyAllowedCharacters = New TextBoxOnlyAllowedCharacters()

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
            Handles MyBase.Load
        With TextBox1
            .SetBounds(10, 10, Me.Width - 30, 20)
            With Me
                .Controls.Add(TextBox1)
                .Button1.Text = "Ende"
                .Label1.Text = _
                "Fuegen Sie zum Testen z.B. ein Komma aus der Zwischenablage in die TextBox ein"
            End With
        End With
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
            Handles Button1.Click
        Me.Close()
    End Sub
End Class

Public Class TextBoxOnlyAllowedCharacters
    Inherits TextBox

    Protected Overrides Sub OnValidating(ByVal e As System.ComponentModel.CancelEventArgs)
        MyBase.OnValidating(e)
        With Me
            For n As Integer = 0 To .Text.Length - 1
                If Not .AllowedCharacters(.Text.Chars(n)) Then
                    e.Cancel = True
                    Exit Sub
                End If
            Next
        End With
    End Sub

    Private Function AllowedCharacters(ByVal AllowedCharacter As Char) As Boolean
        Dim Code As UnicodeCategory = Char.GetUnicodeCategory(AllowedCharacter)
        Return Code = LowercaseLetter OrElse _
               Code = DecimalDigitNumber OrElse _
               Code = Control OrElse _
               Code = UppercaseLetter
    End Function

    Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
        MyBase.OnKeyPress(e)
        With Me
            If Not .AllowedCharacters(e.KeyChar) Then
                e.Handled = True
            End If
        End With
    End Sub

End Class