Rubrik: Controls · TextBox & RichTextBox | VB-Versionen: VB5, VB6 | 19.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 Ebert | Bewertung: | Views: 26.770 |
vb.brainshit.com | System: 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.