【C#】フォームの移動時とサイズ変更時のイベント発生順は?

C#
この記事は約2分で読めます。

いつも実装時にイベントの発生順がよくわからなくなるので、フォームの移動時とサイズ変更時のイベント発生順を整理しました。

フォーム移動時のイベント発生順

フォーム移動時のイベント発生順は下記になります。

  1. ResizeBegin
  2. Move
  3. LocationChanged
  4. ResizeEnd

フォームサイズ変更時のイベント発生順

フォームのサイズ変更の枠をクリックした場合でも ResizeBegin と ResizeEnd は発生します。移動している間は Resize と SaizeChange が繰り返し実行されます。

  1. ResizeBegin
  2. Resize
  3. SizeChanged
  4. ResizeEnd

こんな時はどんな実行順になるのか?

フォームの最大化と最小化と元に戻す場合

最大化と最小化と元に戻す場合、ResizeBegin と ResizeEnd は発生しません。

  1. Move
  2. LocationChanged
  3. Resize
  4. SizeChanged

フォームを最大化した後にドラッグで元に戻した場合

サイズ変更と移動を同時にした場合は移動、サイズ変更の順でイベントが発生します。

  1. ResizeBegin
  2. Move
  3. LocationChanged
  4. Resize
  5. SizeChanged
  6. ResizeEnd

プログラムで移動した場合

  1. Move
  2. LocationChanged

プログラムでサイズ変更した場合

  1. Resize
  2. SizeChanged

おわりに

ResizeBegin でサイズ変更時の処理を入れていると、プログラムでサイズ変更した場合は ResizeBegin の処理が実行されないため、意図した動作にならない場合がありそうですね。

コメント

タイトルとURLをコピーしました