vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls · TextBox & RichTextBox   |   VB-Versionen: VB2005, VB200815.10.09
TextBox für verschiedene Eingabeformate

Eine erweiterte TextBox, bei der man zusätzlich festlegen kann, welche Eingaben zulässig sind.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  12.470 
www.tools4vb.deSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Heute stellen wir Ihnen eine Klasse vor, die von der Standard TextBox erbt und diese um eine neue Eigenschaft InputFormat erweitert. Über diese Eigenschaft lässt sich festlegen, welche Eingaben zulässig sind:

  • Nur Zahlen
  • Nur Buchstaben
  • Zahlen und Buchstaben
  • Zahlen, Buchstaben und Sonderzeichen
  • alle Zeichen

Weiterhin implementieren wir ein Ereignis, das immer dann ausgelöst werden soll, wenn der Anwender ein ungültiges Zeichen in die TextBox eingeben will. Über diese Ereignis könnte man bspw. den Anwender darüber informieren, welche Zeichen zulässig sind.

Fügen Sie Ihrem Projekt ein neues Klassenmodul mit nachfolgendem Code hinzu:

Public Class TextBoxEx
  Inherits TextBox
 
  Private m_Format As txtFormat = txtFormat.AllText
 
  ' Definiert die erlaubten Zeichen
  Private Const charsNumeric As String = "0123456789"
  Private Const charsAlpha As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜß "
  Private Const charsSpecial As String = ":.;,!&%/()=*+-_<>"
 
  ' Auflistungskonstanten für die Eingabebeschränkungen
  Public Enum txtFormat
    AllText = 0
    Numeric = 1
    OnlyText = 2
    NumericAndText = 3
    NumerTextSpecialChars = 4
  End Enum
  ''' <summary>
  ''' Wird beim Drücken eines ungültigen Zeichens ausgelöst.
  ''' </summary>
  Public Event InvalidChar(ByVal sender As Object, ByVal KeyChar As Char)
  ''' <summary>
  ''' Legt das Format der zulässigen Eingaben fest oder gibt dieses zurück.
  ''' </summary>
  Public Property InputFormat() As txtFormat
    Get
      Return m_Format
    End Get
    Set(ByVal value As txtFormat)
      m_Format = value
    End Set
  End Property
  ''' <summary>
  ''' Gibt die erlaubten Zeichen als Gesamtstring zurück.
  ''' </summary>
  Public ReadOnly Property AllowedChars() As String
    Get
      Select Case m_Format
        Case txtFormat.Numeric
          Return charsNumeric
        Case txtFormat.OnlyText
          Return charsAlpha
        Case txtFormat.NumericAndText
          Return charsNumeric & charsAlpha
        Case txtFormat.NumerTextSpecialChars
          Return charsNumeric & charsAlpha & charsSpecial
        Case Else
          Return ""
      End Select
    End Get
  End Property
  Private Sub TextBoxEx_KeyPress(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
 
    ' Tastatur-Eingabe prüfen
    Select Case Asc(e.KeyChar)
      Case 8, 13
        ' Backspace und Return immer zulassen
 
      Case Else
 
        ' je nach InpitFormat-Eigenschaft prüfen, 
        ' ob die gedrückte  Taste zulässig ist
        Select Case m_Format
          Case txtFormat.Numeric
            ' nur Zahlen
            e.Handled = Not charsNumeric.Contains(e.KeyChar.ToString)
 
          Case txtFormat.OnlyText
            ' nur Buchstaben
            e.Handled = Not charsAlpha.Contains(e.KeyChar.ToString.ToUpper)
 
          Case txtFormat.NumericAndText
            ' Zahlen und Buchstaben
            e.Handled = (Not charsNumeric.Contains(e.KeyChar.ToString) AndAlso _
              Not charsAlpha.Contains(e.KeyChar.ToString.ToUpper))
 
          Case txtFormat.NumerTextSpecialChars
            ' Zahlen, Buchstaben und Sonderzeichen
            e.Handled = (Not charsNumeric.Contains(e.KeyChar.ToString) AndAlso _
              Not charsAlpha.Contains(e.KeyChar.ToString.ToUpper) AndAlso _
              Not charsSpecial.Contains(e.KeyChar.ToString))
 
        End Select
 
        If e.Handled = True Then
          ' Event auslösen
          RaiseEvent InvalidChar(sender, e.KeyChar)
        End If
 
    End Select
  End Sub
End Class

Anwendungsbeispiel:
Ziehen Sie die neue TextBox auf die Form und setzen InputFormat auf den Wert Numeric. Platzieren Sie weiterhin ein Label-Control auf die Form und benennen es lblStatus.
Wenn der Anwender ein ungültiges Zeichen eingibt, soll ihm dies im Label-Control entsprechend angezeigt werden.

Private Sub TextBoxEx1_InvalidChar(ByVal sender As Object, _
  ByVal KeyChar As Char) Handles TextBoxEx1.InvalidChar
 
  lblStatus.Text = "Ungültiges Zeichen: " & KeyChar & vbCrLf & _
    "Erlaubte Zeichen sind: " & sender.AllowedChars
End Sub
Private Sub TextBoxEx1_TextChanged(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles TextBoxEx1.TextChanged
 
  lblStatus.Text = ""
End Sub

Dieser Tipp wurde bereits 12.470 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel