CellBeginEditイベントでApplication.DoEventsメソッドを実行すると最初の文字が入力されない
対象製品
MultiRow for Windows Forms 10.0J
詳細
CellBeginEditイベントでApplication.DoEventsメソッドを実行している場合、最初の1文字が入力されません。例えば、"abc"と入力した場合、セルには"bc"だけが入力されます。
この動作は仕様に基づく動作になります。文字キーが押された場合、以下のような処理が行われます。
【CellBeginEditイベントでDoEventsメソッドを実行しない場合】
【CellBeginEditイベントでDoEventsメソッドを実行する場合】
DoEventsメソッドを実行する場合、手順4では編集用コントロールが作成されていないため、WM_Keycharメッセージを編集用コントロールに送ることができず、最初の1文字目が入力されません。
この動作は仕様に基づく動作になります。文字キーが押された場合、以下のような処理が行われます。
【CellBeginEditイベントでDoEventsメソッドを実行しない場合】
- WM_KeyDownメッセージを受け取ります。
- CellBeginEditイベントが発生します。
- 編集用コントロールが作成されます。
- WM_KeyCharメッセージを受け取ります。
- 編集用コントロールに入力文字が送られます。
【CellBeginEditイベントでDoEventsメソッドを実行する場合】
- WM_KeyDownメッセージを受け取ります。
- CellBeginEditイベントが発生します。
- DoEventsメソッドが実行されます。
- WM_KeyCharメッセージを受け取ります。
- 編集用コントロールが作成されます。
DoEventsメソッドを実行する場合、手順4では編集用コントロールが作成されていないため、WM_Keycharメッセージを編集用コントロールに送ることができず、最初の1文字目が入力されません。