いつも実装時にイベントの発生順がよくわからなくなるので、フォームの移動時とサイズ変更時のイベント発生順を整理しました。
フォーム移動時のイベント発生順
フォーム移動時のイベント発生順は下記になります。
- ResizeBegin
- Move
- LocationChanged
- ResizeEnd
フォームサイズ変更時のイベント発生順
フォームのサイズ変更の枠をクリックした場合でも ResizeBegin と ResizeEnd は発生します。移動している間は Resize と SaizeChange が繰り返し実行されます。
- ResizeBegin
- Resize
- SizeChanged
- ResizeEnd
こんな時はどんな実行順になるのか?
フォームの最大化と最小化と元に戻す場合
最大化と最小化と元に戻す場合、ResizeBegin と ResizeEnd は発生しません。
- Move
- LocationChanged
- Resize
- SizeChanged
フォームを最大化した後にドラッグで元に戻した場合
サイズ変更と移動を同時にした場合は移動、サイズ変更の順でイベントが発生します。
- ResizeBegin
- Move
- LocationChanged
- Resize
- SizeChanged
- ResizeEnd
プログラムで移動した場合
- Move
- LocationChanged
プログラムでサイズ変更した場合
- Resize
- SizeChanged
おわりに
ResizeBegin でサイズ変更時の処理を入れていると、プログラムでサイズ変更した場合は ResizeBegin の処理が実行されないため、意図した動作にならない場合がありそうですね。
コメント