C # e IME - obtendo o texto de entrada atual

Estou usando o IME japonês como exemplo, mas provavelmente é o mesmo em outros idiomas que usam um IME como entrada.

Quando o usuário digita texto em uma caixa de texto usando o IME, os eventos KeyDown e KeyUp são acionados. No entanto, a propriedade TextBox.Text não retorna o texto digitado até que o usuário tenha validado a entrada no IME usando a tecla Enter.

Assim, por exemplo, se o usuário digitar 5 vezes あ e validar, receberei 5 eventos de keydown / keyup, cada vez que TextBox.Text retornará "" (a sequência vazia) e, no final, obterá um keydown / keyup para a entrada e o TextBox.Text se tornará diretamente "あ あ あ あ あ".

Como posso obter a entrada do usuário enquanto ele está digitando, antes que o usuário valide no final?

(Eu sei como fazer isso em javascript em um campo <input> em uma página da web, por isso deve ser possível em C #!)

questionAnswers(1)

yourAnswerToTheQuestion