C # Lassen Sie eine Gruppe von Zeichen in einer Textbox sich wie ein Zeichen verhalten

8

Grundsätzlich habe ich Schlüsselwörter wie sin( und cos( in einem Textfeld, die sich wie ein einzelnes Zeichen verhalten sollen.

Wenn ich die ganze Zeichenfolge darunter erwähne bezieht sie sich auf die Gruppe von Zeichen (zum Beispiel " sin( ")

Verwendung von sin( als ein Beispiel:

Wenn der Cursor in dieser Position war (hinter dem s ):

Wenn Sie del gedrückt haben, wird die gesamte Zeichenfolge entfernt. Wenn die rechte Pfeiltaste gedrückt wurde, würde der Cursor nach dem ( springen.

Wenn der Cursor in dieser Position war (nach ( ):

Wenn backspace gedrückt wurde, wird die gesamte Zeichenfolge entfernt. Wenn die linke Pfeiltaste gedrückt wurde, springt der Cursor nach% code%.

BEARBEITEN: Danke an John Skeet, der darauf hingewiesen hat.

Wenn Sie eine Teilzeichenfolge der Zeichengruppe auswählen (z. B. s from si ), wählen Sie die gesamte Zeichenfolge aus.

Tut mir leid, wenn es schwer zu verstehen ist, was ich mir vorstelle, ist ein bisschen schwierig in Worte zu fassen.

EDIT 2: Danke an Darksheao für die Antwort auf die Rücktaste und die Löschtasten. Ich habe das sin( -Segment in das PreviewKeyDown-Ereignis verschoben, da es nicht mit dem KeyPress-Ereignis funktioniert.

BEARBEITEN 3: Mit der delete Art und Weise, Dinge zu tun, hier ist, wie ich die Implementierung für die linken und rechten Tasten gemacht:

%Vor%

Alles was übrig bleibt, ist die Maus-Implementierung. Jemand? Ich erkannte auch, dass der Benutzer die Maus verwenden kann, um die Einfügemarke in der Mitte einer dieser Zeichenfolgen zu platzieren. Wenn dies der Fall ist, muss die Maus an den Anfang der Zeichenfolge verschoben werden.

    
Lee Yi 12.05.2015, 14:04
quelle

1 Antwort

2

Hier ist ein Codeabschnitt, der ein Array der Zeichenkombinationen einrichtet, die Sie als "einzelne Zeichen" sehen möchten, und einen Handler einrichtet, der nach ihnen sucht.

%Vor%

Wenn Sie einige Änderungen daran vornehmen, so dass Sie den SelectionStart durchsuchen, werden Sie damit umgehen, was in Jons Kommentar erwähnt wurde.

Referenzen: TextBox-Ereignisreferenz und Wie finde ich die Position eines Cursors in einem Textfeld? C #

    
Darksheao 12.05.2015, 22:32
quelle

Tags und Links