Bei der Eingabe von z.B. Namen in ein Textfeld stellt VB.NET die VbStrConv-Funktion zur Verfügung, mit der jedes Wort des übergebenen Strings autom. groß geschrieben wird. Ärgerlich ist nur, dass die Korrektur des Textes erst nach dem Verlust des Focus durchgeführt werden kann, oder der Cursor bleibt an Position 0 des Textfeldes. Folgendes Ergebnis sollte zur Laufzeit entstehn: aus "m" wird bei weiterer Eingabe "Mü". Gleichzeitig sollte diese Funktion optional sein, um bei Namen wie "von Eckstein" auch Kleinschreibung zuzulassen. Hierfür können wir eine neue Klasse txtBox mit folgendem Quelltext erstellen:
Imports System.Windows.Forms Public Class txtBox ' von Standard TextBox abgeleitete Klasse Inherits TextBox Private pos As Integer Private kleinschreibung As Double Private mygroßschreibung As Boolean Sub New() MyBase.New() ' Eigenschaft wird auf FALSE gesetzt mygroßschreibung = False End Sub ' Eigenschaft wird erstellt Public Property Großschreibung() As Boolean Get Return mygroßschreibung End Get Set(ByVal value As Boolean) mygroßschreibung = value End Set End Property Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs) If mygroßschreibung = False Then Exit Sub pos = Me.SelectionStart MyBase.OnKeyPress(e) ' Eigenschaft wird überprüft If kleinschreibung = 0 Then If Me.SelectionStart = 0 Then If Me.TextLength = 1 Then ' Bei Eingabe des zweiten Buchstaben wird ' der Anfangsbuchstabe großgeschrieben Me.Text = StrConv(Me.Text, VbStrConv.ProperCase) Me.SelectionStart = Len(Me.Text) Else ' wird ein Schreibfehler korrigiert (Textbox ist ' gefüllt), wird der 1. Buchstabe großgeschrieben Me.Text = StrConv(Me.Text, VbStrConv.ProperCase) Me.SelectionStart = pos End If Else Me.Text = StrConv(Me.Text, VbStrConv.ProperCase) Me.SelectionStart = pos End If End If End Sub Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs) pos = Me.SelectionStart MyBase.OnKeyDown(e) If kleinschreibung = 0 Then ' Linke und rechte Pfeiltaste bleiben aktiv If e.KeyCode = Keys.Left Or e.KeyCode = Keys.Right Then Me.Text = StrConv(Me.Text, VbStrConv.ProperCase) Me.SelectionStart = pos End If End If End Sub Protected Overrides Sub OnKeyUp(ByVal e As System.Windows.Forms.KeyEventArgs) MyBase.OnKeyUp(e) ' F2-Taste zum Ein und Ausschalten der ' Funktion in der jeweiligen Txtbox If e.KeyCode = Keys.F2 Then If kleinschreibung = 0 Then kleinschreibung = 1 Else kleinschreibung = 0 End If End If End Sub End Class Nach dem erneuten Erstellen des Projekts steht die Klasse in der Toolbox als txtBox-Eintrag zur Verfügung. Wird ein neues Textfeld benötigt, bei dem die Groß- und Kleinschreibung automatisch berücksichtigt wird, zieht man einfach das txtBox-Element aus der Toolbox auf die Form. Nun noch die Eigenschaft "Sonstiges/Großschreibung" auf TRUE setzen und die Funktion steht bereit. Die Funktion lässt sich durch drücken der F2-Taste aus- und einschalten wenn die jeweilige Textbox den Focus besitzt. Dieser Tipp wurde bereits 13.550 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats sevWizard für VB5/6 ![]() Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) |
||||||||||||||||
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. |