フォーカスがMultiRowから移動した時にIMEの変換モードが「無変換」になる場合がある

文書番号 : 41332     文書種別 : 制限事項     登録日 : 2017/09/15     最終更新日 : 2017/09/15
文書を印刷する
対象製品
MultiRow for Windows Forms 10.0J
詳細
下記のいずれかの状態で、フォーカスがMultiRowからテキストボックスなどに移動すると、移動先のコントロールでIMEの「無変換」が引き継がれる場合があります。

1. MultiRowのEnterイベントでカレントセルの位置を変更した際、その移動先セルのImeModeがDisableに設定されている。
2. MultiRowのEnterまたはCellEnterイベントで、最終行のEnabledプロパティを Falseに設定する。

これは、MultiRowのIME状態の保持方法に関連する現象となります。

MultiRowではフォーカス取得時(GotFocus)にIME状態を保持し、フォーカス消失時にIMEの状態を復帰しています。これによって、例えばテキストボックスからMultiRowをクリックしたときやMultiRowからテキストボックスなどにフォーカスを移動した場合でもIME状態がコントロール毎に正しく設定されます。

ただし、上記のGotFocusイベントはEnterイベントの後で発生します。そのため、MultiRowのEnterイベント内でIME状態が変更されるようなコードを実行した場合には、その状態のIMEを保持してしまいます。結果としてMultiRowのフォーカス消失時には正しくないIMEの状態を復帰することになります。

また、MultiRowがコードでIME状態を変更してもシステムではIMEをすぐに変更しないため、常にこの現象が発生するとは限りません。
回避方法
1.の場合には、MultiRowにフォーカスを移動する際にIMEモードを一旦別のモードに変更するなどの実装をご検討ください。
2.の場合には、EnterまたはCellEnterイベントにおいてEnabledプロパティをFalseに設定する処理をBeginInvokeにて実行する方法をご検討ください。