Używam japońskiego edytora IME jako przykładu, ale prawdopodobnie jest taki sam w innych językach, które używają edytora IME do wprowadzania danych.C# i IME - pobieranie bieżącego tekstu wejściowego
Gdy użytkownik wpisze tekst w pole tekstowe za pomocą IME, zdarzenia KeyDown i KeyUp zostaną uruchomione. Jednak właściwość TextBox.Text nie zwraca wpisanego tekstu, dopóki użytkownik nie sprawdzi poprawności danych wejściowych w edytorze IME za pomocą klawisza Enter.
Na przykład, jeśli użytkownik wpisze 5 razy あ, to potwierdzi, otrzymam 5 zdarzeń keydown/keyup, za każdym razem TextBox.Text zwraca "" (pusty ciąg znaków), a na końcu otrzymam keydown/keyup dla klawisza Enter i TextBox.Text stanie się bezpośrednio "あ あ あ あ あ".
Jak mogę uzyskać dane wejściowe od użytkownika, gdy użytkownik pisze, zanim użytkownik sprawdzi poprawność na końcu?
(wiem, jak to zrobić w javascript na < wejściowego > polu na stronie internetowej, więc to musi być możliwe w języku C#!)
Czy to w oknach? Jeśli tak, możesz przechwycić komunikat WM_IME_COMPOSITION i użyć ImmGetCompositionString, aby uzyskać dane wejściowe od użytkownika. – Dian