C#でテキストボックスAに入力された文字のフリガナをBのテキストボックスに表示しようとしてます。
例えば、山田太郎とテキストを続けて入力した場合にはOKなのですが、
山田と入力してから太郎と入力すると最後の文言「タロウ」のみが表示されてしまいます。
これを続けて表示する手立てはございますでしょうか。
以下にソースを記述しておきます。
C#
1using System.Runtime.InteropServices; 2 3public string Furigana = ""; 4const int GCS_RESURTREADSTR = 0x0200; 5 6[ DllImport("imm32.dll" )] 7static extern IntPtr ImmGetContext( IntPtr hWnd); 8[ DllImport("imm32.dll" )] 9static extern int ImmGetCompositionString( 10 IntPtr hiMC, int dwIndex, StringBuilder lpBuf, int dwBufLen); 11[ DllImport("imm32.dll" )] 12static extern bool ImmReleaseContext( IntPtr hWnd, IntPtr hiMC); 13 14private void txtSecName_Leave(object sender, EventArgs e) 15{ 16 17 string tmpStr; 18 IntPtr himc = ImmGetContext(txtSecName.Handle); 19 20 try 21 { 22 int dwSize = ImmGetCompositionString(himc, GCS_RESURTREADSTR, null, 0); 23 StringBuilder lpBuf = new StringBuilder(dwSize); 24 25 ImmGetCompositionString(himc, GCS_RESURTREADSTR, lpBuf, dwSize); 26 lpBuf.Length = dwSize; 27 tmpStr = lpBuf.ToString(); 28 Furigana += tmpStr; 29 txtSecFuri.Text = Furigana; 30 } 31 finally 32 { 33 ImmReleaseContext(txtSecName.Handle, himc); 34 35 } 36}
イベントとして「KeyDown」も試してみましたが、思うようにいきませんでした。
サンプルを見て作成をしたので本質的なことが理解できていないのだと思いますのでよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。