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 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.

VB.NET 2017/2015/2013 Einführung

Das Seminar befähigt Sie zur eigenständigen Entwicklung von anwenderorientierten Programmen in VB.NET, worin auch der Einsatz von Datenbanken enthalten ist.

        ''' <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!