CellBeginEditイベントでApplication.DoEventsメソッドを実行すると最初の文字が入力されない

文書番号 : 40613     文書種別 : 技術情報     登録日 : 2017/07/26     最終更新日 : 2017/07/26
文書を印刷する
対象製品
MultiRow for Windows Forms 10.0J
詳細
CellBeginEditイベントでApplication.DoEventsメソッドを実行している場合、最初の1文字が入力されません。例えば、"abc"と入力した場合、セルには"bc"だけが入力されます。
この動作は仕様に基づく動作になります。文字キーが押された場合、以下のような処理が行われます。

【CellBeginEditイベントでDoEventsメソッドを実行しない場合】
  1. WM_KeyDownメッセージを受け取ります。
  2. CellBeginEditイベントが発生します。
  3. 編集用コントロールが作成されます。
  4. WM_KeyCharメッセージを受け取ります。
  5. 編集用コントロールに入力文字が送られます。

【CellBeginEditイベントでDoEventsメソッドを実行する場合】
  1. WM_KeyDownメッセージを受け取ります。
  2. CellBeginEditイベントが発生します。
  3. DoEventsメソッドが実行されます。
  4. WM_KeyCharメッセージを受け取ります。
  5. 編集用コントロールが作成されます。

DoEventsメソッドを実行する場合、手順4では編集用コントロールが作成されていないため、WM_Keycharメッセージを編集用コントロールに送ることができず、最初の1文字目が入力されません。