フォーム Form.Load 、 Form.Shown および Form.Activated イベントの違いは何ですか?彼らが解雇される順序は何ですか?
Windows Forms Events Lifecycle を参照してください:
Load
イベントは、ハンドルが作成された後、表示される前に、フォームが初期化されたときに発生します。
Shown
イベントは、form.Show()
(またはform.Visible = true
)。
フォームを非表示にしてから再度表示すると、Shown
が再び起動します。 (ただし、Load
はしません)
ユーザーがフォームに切り替えると、Activate
イベントが発生します。
ユーザーが別のプログラム(またはフォーム)に切り替えてからフォームに戻ると、Activate
が再び起動します。
また、Form.Activate
イベントは複数回発生する可能性があります。たとえば、フォームからメッセージボックスを開き、メッセージボックスのいずれかのボタンをクリックしてフォームに戻ると、Form.Activate
が発生します。 FileOpenDialog
などの他のダイアログボックスについても同様です。
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
順序はForm.Load
、フォームを初期化し、コントロールを呼び出します、Form.Shown
、フレームを表示可能としてマークします( C++ でも、これはフォームの作成後に行われます)、およびForm.Activated
、これはフォーラムの焦点を与えます。