作成日: 2022/03/11 最終更新日: 2022/03/30
文書種別
制限事項
詳細
下記のいずれかの状態で、フォーカスが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の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にて実行する方法をご検討ください。
2.の場合には、EnterまたはCellEnterイベントにおいてEnabledプロパティをFalseに設定する処理をBeginInvokeにて実行する方法をご検討ください。