Tastatureingaben abfangen und Zeichen einfügen in TextBox

Die Programmiersprache C# und Programmierung im .NET Framework/Mono
Antworten
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Tastatureingaben abfangen und Zeichen einfügen in TextBox

Beitrag von Xin » Mi Aug 13, 2008 10:47 am

Moin!

Neues Board, neues Glück!
Programmiert hier zufällig jemand neben mir in C#/.NET?

Folgende Frage ergibt sich: Ich muss die Zeichenfolgen Alt-Gr+o, Alt-Gr+u und Alt-Gr+b in einer TextBox abfangen und dafür UniCodes in die Textbox einfügen.

Während ich die Zeichen inzwischen schon abfangen kann (indem ich von der TextBox ableite und die Funktion WndProc überlade und mir dort WM_KEYDOWN einfange), scheitert es nun am Einfügen des Zeichens.
Das Zeichen dem Text anzufügen ist kein Problem, aber ich möchte es natürlich dort einfügen, wo der Cursor steht und den Cursor anschließend hinter dem neuen Zeichen haben.

Hat jemand mit sowas schon experimentiert?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Tastatureingaben abfangen und Zeichen einfügen in TextBox

Beitrag von Xin » Mi Aug 13, 2008 11:15 am

Problem gelöst :-)

Wärend beim Textcursor sonst von 'Caret' gesprochen wird, zum Beispiel mit der Funktion ScrollToCaret(), befindet sich die Cursorposition hier unter SelectionStart.
Auf eine Insert-Funktion wurde freundlicherweise verzichtet - zumindest habe ich sie noch nicht gefunden.

Folgendes löst jedenfalls mein Problem und fügt den Uni-Code-Character ein. Nicht wirklich schön... aber funktioniert wenigstens.

Code: Alles auswählen

  int temp = SelectionStart;
  Text = Text.Substring( 0, temp ) + "\u2022" + Text.Substring( temp + SelectionLength );
  SelectionStart = temp + 1;
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten