Ich verwende den japanischen IME als Beispiel, aber es ist wahrscheinlich das gleiche in anderen Sprachen, die einen IME für die Eingabe verwenden.C# und IME - Abrufen des aktuellen Eingabetextes
Wenn der Benutzer mithilfe des IME Text in ein Textfeld eingibt, werden die Ereignisse KeyDown und KeyUp ausgelöst. Die TextBox.Text-Eigenschaft gibt den eingegebenen Text jedoch erst zurück, wenn der Benutzer die Eingabe im IME mit der Eingabetaste bestätigt hat.
Also zum Beispiel, wenn der Benutzer 5 mal あ dann validiert, bekomme ich 5 keydown/keyup Ereignisse, wobei TextBox.Text jedesmal "" (die leere Zeichenfolge) zurückgibt und am Ende bekomme ich ein Keydown/key-up für die Eingabetaste und der TextBox.Text wird direkt "あ あ あ あ あ".
Wie kann ich die Benutzereingaben erhalten, während der Benutzer tippt, bevor der Benutzer am Ende validiert?
(Ich weiß, wie dies auf einem <Eingang> Feld auf einer Webseite in Javascript zu tun, so muss es in C#! Möglich)
Ist es in Windows? Wenn ja, können Sie die Meldung WM_IME_COMPOSITION abfangen und ImmGetCompositionString verwenden, um die Benutzereingabe abzurufen. – Dian