Facebookのあれ的なテキストボックスをつくる

Alt+Enterで改行し、Enterで別処理(送信など) するTextBoxを作ろうとしていたのだけど、
日本語入力がONになってるときの処理にかなり困ったのでメモ。

普通にやると、
変換中→Enter押下→変換確定と同時に別処理も実行
となってしまう。

この場合、TextBoxを継承して、WndProcで変換中か変換確定済みかを返す様にすればよい。


【サンプル】

class newTextBox : TextBox
    {
           //WndProcのオーバーライド
           protected override void WndProc(ref Message m)
           {
                //IMEの変換開始
                 const int WM_IME_STARTCOMPOSITION = 0x010D;
                 //IMEの変換確定
                 const int WM_IME_ENDCOMPOSITION = 0x010E;


                 switch (m.Msg)
                 { 
                      case WM_IME_STARTCOMPOSITION:
                          MessageBox.Show("WM_IME_STARTCOMPOSITION");
                          break;

                     case WM_IME_ENDCOMPOSITION:
                          MessageBox.Show("WM_IME_ENDCOMPOSITION");
                          break;
                 }
                 base.WndProc(ref m);
           }
    }