Ich möchte alle in ein Textfeld eingegebenen Zeichen in Großbuchstaben ändern. Der Code fügt das Zeichen hinzu, aber wie verschiebe ich das Caret nach rechts?
%Vor% Legen Sie die CharacterCasing
Eigenschaft von% fest co_de% bis TextBox
; dann müssen Sie es nicht manuell verarbeiten.
Beachten Sie, dass Upper
das neue Zeichen an das Ende der Zeichenfolge anfügt, auch wenn sich die Eingabezeile in der Mitte der Zeichenfolge befindet (was für die meisten Benutzer höchst verwirrend ist). Aus dem gleichen Grund können wir nicht davon ausgehen, dass das Eingabe-Caret am Ende der Zeichenfolge nach Eingabe des Zeichens erscheinen sollte.
Wenn Sie das wirklich noch im Code machen möchten, sollte so etwas funktionieren:
%Vor%Dies wird die Position des Einfügepunkts beibehalten (aber persional würde ich mit der Antwort von Fredrik Mörk gehen)
%Vor%SelectionStart könnte eigentlich SelStart heißen, ich habe im Moment keinen Compiler zur Hand.
Wenn Sie dies manuell tun müssen, können Sie
verwenden %Vor%Aber der vorhergehende Code fügt das neue Zeichen am Ende des Textes ein. Wenn Sie es einfügen möchten, wo der Cursor ist:
%Vor%Dieser Code fügt das neue Zeichen an der Cursorposition ein und verschiebt den Cursor nach links von dem neu eingefügten Zeichen.
Aber ich denke immer noch, dass das Setzen von CharacterCasing besser ist.
Eine andere Methode besteht darin, einfach den Wert des KeyChar selbst zu ändern:
%Vor%Obwohl das Verwenden der CharacterCasing-Eigenschaft die einfachste Lösung ist.