vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
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:  Views:  26.770 
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.
 



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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle 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.