Feedback

VB - Textbox-Extension nur numerische Werte zulassen mit Ein-/Aus

Veröffentlicht von am 29.08.2008
(1 Bewertungen)
Textbox numerische Werte zulassen mit einem Ein-/Ausschalter als Extension
GFU-Schulungen  [Anzeige]

VB.NET 2017/2015/2013 Komplett

Ziel des Seminars ist der flexible Umgang mit VB.NET, wie z.B. die damit verbundene eigenständige Entwicklung von Programmen oder das Verwenden von Datenbanken.

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

        ''' <summary>
        ''' Nur Eingabe von Zahlen zulassen {0-9/,/-}
        ''' </summary>
        ''' <param name="T">Typ TextBox</param>
        ''' <param name="allow">Ein-/Ausschalten numerische Eingabe</param>
        ''' <remarks></remarks>
        <Extension()> _
       Public Sub AllowNumeric(ByVal T As TextBox, ByVal allow As Boolean)
            If T IsNot Nothing Then
                If allow Then
                    AddHandler T.KeyPress, AddressOf DoubleKeyPresser
                Else
                    RemoveHandler T.KeyPress, AddressOf DoubleKeyPresser
                End If
            End If
        End Sub


        Private Sub DoubleKeyPresser(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
            Select Case e.KeyChar
                Case ControlChars.Tab, ControlChars.Back : Exit Sub
                Case ControlChars.Cr : e.Handled = True : SendKeys.Send("{TAB}") : Exit Sub
                Case "0"c To "9"c : Exit Sub
                Case "-"c
                    If _CountStrings(CType(sender, TextBox).Text, CChar("-")) = 0 Then Exit Sub
                Case ","c       ' nur maximal 1 Komma zulassen
                    If _CountStrings(CType(sender, TextBox).Text, CChar(",")) = 0 Then Exit Sub
                Case "."c
                    If _CountStrings(CType(sender, TextBox).Text, CChar(",")) = 0 Then e.KeyChar = ","c : Exit Sub
            End Select

            e.Handled = True
        End Sub

        Private Function _CountStrings(ByVal str As String, ByVal regexStr As Char) As Integer
            Dim regex As New RegularExpressions.Regex(regexStr)
            Return regex.Matches(str).Count
        End Function
Abgelegt unter Textbox, Extentsion.

1 Kommentare zum Snippet

lotbec schrieb am 18.07.2009:
Die Idee ist gut, allerdings kann man das Minuszeichen auch inmitten der Zahl machen :-)
 

Logge dich ein, um hier zu kommentieren!