web-dev-qa-db-ja.com

Windows Formsでのイベント「Form.Load」、「Form.Shown」、および「Form.Activated」の順序

フォーム Form.LoadForm.Shown および Form.Activated イベントの違いは何ですか?彼らが解雇される順序は何ですか?

49
Ananth

Windows Forms Events Lifecycle を参照してください:

  • 移動:このイベントは、フォームが移動されたときに発生します。デフォルトでは、フォームがインスタンス化されて起動されると、ユーザーはそのフォームを移動しませんが、このイベントはLoadイベントが発生する前にトリガーされます。
  • ロード:このイベントは、フォームが初めて表示される前に発生します。
  • VisibleChanged:このイベントは、Visibleプロパティの値が変更されたときに発生します。
  • Activated:このイベントは、フォームがコードまたはユーザーによってアクティブ化されたときに発生します。
  • 表示:このイベントは、フォームが最初に表示されるたびに発生します。
  • ペイント:このイベントは、コントロールが再描画されるときに発生します。
  • 非アクティブ化:このイベントは、フォームがフォーカスを失い、アクティブなフォームではない場合に発生します。
  • 終了:このイベントは、フォームが閉じているときに発生します。
  • Closed:このイベントは、フォームが閉じられるときに発生します。
69
Galwegian
  • Loadイベントは、ハンドルが作成された後、表示される前に、フォームが初期化されたときに発生します。

  • Shownイベントは、form.Show()(またはform.Visible = true)。
    フォームを非表示にしてから再度表示すると、Shownが再び起動します。 (ただし、Loadはしません)

  • ユーザーがフォームに切り替えると、Activateイベントが発生します。
    ユーザーが別のプログラム(またはフォーム)に切り替えてからフォームに戻ると、Activateが再び起動します。

23
SLaks

また、Form.Activateイベントは複数回発生する可能性があります。たとえば、フォームからメッセージボックスを開き、メッセージボックスのいずれかのボタンをクリックしてフォームに戻ると、Form.Activateが発生します。 FileOpenDialogなどの他のダイアログボックスについても同様です。

13
matrix

FormクラスとControlクラスは、アプリケーションの起動とシャットダウンに関連する一連のイベントを公開します。 Windowsフォームアプリケーションが起動すると、メインフォームの起動イベントが次の順序で発生します。

Control.HandleCreated
Control.BindingContextChanged
Form.Load
Control.VisibleChanged
Form.Activated
Form.Shown

アプリケーションが終了すると、メインフォームのシャットダウンイベントが次の順序で発生します。

Form.Closing
Form.FormClosing
Form.Closed
Form.FormClosed
Form.Deactivate

フォーカスおよび検証イベント

キーボード(TAB、SHIFT + TABなど)を使用して、SelectメソッドまたはSelectNextControlメソッドを呼び出すか、ActiveControlプロパティを現在のフォームに設定してフォーカスを変更すると、Controlクラスのフォーカスイベントが次のように発生します。注文:

Enter
GotFocus
Leave
Validating
Validated
LostFocus

マウスを使用するか、Focusメソッドを呼び出してフォーカスを変更すると、Controlクラスのフォーカスイベントが次の順序で発生します。

Enter
GotFocus
LostFocus
Leave
Validating
Validated
7
Taja_100

順序はForm.Load、フォームを初期化し、コントロールを呼び出します、Form.Shown、フレームを表示可能としてマークします( C++ でも、これはフォームの作成後に行われます)、およびForm.Activated、これはフォーラムの焦点を与えます。

3
Stefan Valianu