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.553 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. |
vb@rchiv CD Vol.6 ![]() ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats sevGraph (VB/VBA) ![]() Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! |
||||||||||||||||
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. |