vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 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: VB5, VB619.05.05
Eingabe in Textbox auf bestimmte Zeichen begrenzen

Dieser Tipp zeigt, wie man die Eingabe in einer Textbox auf bestimmte Zeichen begrenzen kann. Auch das Einfügen via Kontextmenü wird unterbunden.

Autor:   Sven EbertBewertung:     [ Jetzt bewerten ]Views:  26.748 
vb.brainshit.comSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Nachfolgender Tipp zeigt, wie man die Eingabe in einer TextBox sehr einfach auf bestimmte Zeichen begrenzen kann. Ferner wird gezeigt, wie man sogar das Einfügen von Text über das Kontextmenü verhindert.

Erstellen Sie ein neues Projekt und platzieren auf die Form eine TextBox namens Text1. Fügen Sie anschließend nachfolgenden Code in den Codeteil der Form ein:

Private Sub Text1_KeyPress(KeyAscii As Integer)
  Dim Zugelassen As String
 
  ' In diesen String kommen alle Zeichen, die Sie zulassen möchten.
  ' (Bsp.: Es werden nur Zahlen, Kommas und Backspace zugelassen.)
  Zugelassen = "1234567890," & Chr$(8)
 
  ' Schaltet die Textbox frei. Es können Zeichen eingegeben werden
  Text1.Locked = False
 
  ' Es wird überprüft, ob das Zeichen, dass eingeben wurde zulässig ist
  If InStr(1, Zugelassen, Chr$(KeyAscii)) = 0 Then
    ' Falls es sich bei dem Zeichen um ein unzulässiges Zeichen
    ' handelt, wird die Eingabe durch Setzen von "KeyAscii = 0" unterbunden
    KeyAscii = 0
  End If
End Sub

Der nächste Code-Block kommt in die Prozedur "Private Sub Text1_MousDown". Dieser Teil unterbindet, dass man durch das Öffnen des Kontextmenüs mit der rechten Maustaste irgendwelche Zeichen aus der Zwischenablage einfügen kann. Es ist zwar simpel, aber (wie ich finde) clever! Oder!?

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, _
  X As Single, Y As Single)
 
  ' Wenn die rechte Maustaste gedrückt wurde und das
  ' Kontextmenü geöffnet werden soll...
  If Button = 2 Then
    ' Dann wird jede Eingabe in die Textbox ausgeschlossen.
    Text1.Locked = True
  Else
    ' Bei jedem anderem Klick wird die Textbox für die
    ' Eingabe wieder freigegeben
    Text1.Locked = False
  End If
End Sub

Im Forum wurde das Öffnen des Kontextmenüs mit Hilfe von Subclassing (30 Zeilen Code), oder mit Hilfe von Sendmessage und einer Picturebox gelöst (15 Zeilen Code).
Ich finde diese Lösung sehr viel einfacher.