C#

【C#/.Net】Windows.Formsのイベントが発生する順番を徹底解説!登録されたイベントハンドラを正しく処理しよう。

こんにちは、リバティエンジニアのFUNA(フナ)です。

現役でフリーランスのエンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。

 

この記事はこんな方におすすめ

  • Windows.Forms アプリケーションのイベント発生順序が知りたい
  • イベントが正しく処理されない

 

Windowsフォームアプリケーションの開発をしていると、コントロールのイベントが発生する順序について考えないといけないことがあります。

今回は、C#で開発するのに重要な「Windows.Formsのイベントが発生する順番」についてみていこうと思います。

 



 

「各イベントを順番に処理する必要がある。」

これは、開発者にとってすごく重要な問題です。


フォームの構成している要素を再描画したりするときには、イベント処理に注意が必要です。

実行時のイベントの正確な発生順序がとても重要であり、それを認識して気を配る必要があります。

 

そもそもC#の.Net開発におけるイベントとは?

C#での「イベント」についてはみなさんご存じだと思いますが、簡単に説明していきます。

 

イベントとは

様々なコントロール(Button, TextBox, Checkox 等)に対して
「ボタンが押されたよ!」「テキストが変わったよ!」「チェックボックスにチェックがついたよ!」
などのアクションがあった際に、その通知を受けてどんな処理をするのか。
を指示することができます。

 

例えば「ファイルを選択」というButtonが押されたときに、”Button_Click”のイベントが発生します。

そのイベントを受けて「ファイルを選択する画面を表示」するというような指示を出すことができます。

 

C#.Netアプリケーション開発におけるイベントの種類

一言に「イベント」と言っても「コントロールに付随するイベント」や「フォームのイベント」などいろいろあるので、そのあたりもまた記事にしておきますね!

 

次にイベントにはいったいどのような種類があるのか、代表的なものを紹介します!

Form.Loadフォームを読み込むときに発生します
Form.Shownフォームが最初に表示されたときに発生します
Form.FormClosedフォームを閉じるたびに、閉じた後及び閉じる理由を指定した後に発生します。
Form.FormClosingフォームを閉じるたびに、閉じる前及び閉じる理由を指定する前に発生します。
Button.Clickコンポーネントがクリックされた時に発生します。
TextBox.TextChangedテキストの値が変更されたときに発生します。
CheckBox.CheckedChangedCheckの値が変更される時に発生します。
Control.Leaveコントロールがフォームのアクティブコントロールで無くなった時に発生します。(アクティブでなくなった時)
Control.KeyUpキーを離した時に発生します。
Control.KeyDownキーが最初に押された時に発生します。

 

簡単に紹介しただけでもこんなにあります。

実際には「イベント」はまだまだたくさんあり、同じClickイベントやLoadイベントでもコントロールの数だけ存在します。

随時使うコントロールのイベントにはどのようなものがあるのか調べて把握することが大切です。

 

C#.NetでのWindows.Formイベントの発生順序

では、さっそく本題に入ります。

C#の.Netフレームワークには様々なコントロールがありますが、今回は「Windows.Form」のイベントの順序に絞ってみていきます。

 

Windowsフォームアプリケーション起動時のイベント順序

Windowsフォームアプリケーションは起動すると、メインフォームのスタートアップイベントが決められた順序で発生します。

 

  1. Control.HandleCreated
  2. Control.BindingContextChanged
  3. Form.Load
  4. Control.VisibleChanged
  5. Form.Activated
  6. Form.Shown

 

プロジェクトを作って、最初の状態で実行しても処理を指定していませんので何も起きませんが、実際にはこの6つのイベントが順番に発生して通知してくれているんです。

そのため、あるべき場所で正しい処理を順番に処理したい時は、このイベントの順番がとても重要になってきますので覚えておきましょう。

 

Windowsフォーム終了時のイベント順序

先ほどは起動してすぐのイベントでしたが、今度はWindowsフォームアプリケーションを終了したときに順番に発生するイベントを見ていきましょう!

 

  1. Form.Closing
  2. Form.FormClosing
  3. Form.Closed
  4. Form.FormClosed
  5. Form.Deactivate

 

このように、アプリケーションを閉じる時にもメインフォームの「シャットダウンイベント」が順番に発生します。

こちらも起動時と同様に、正しい順番で処理を行いたいときには、知っておかなければならないことなので覚えておきましょう。

 

ちなみに「Applicationクラス」の 「ApplicationExit」というイベントは、上記で紹介したメインフォームのシャットダウンイベントが終わった後に発生するので注意してください。

 

まとめ

今回は、C#.NetでWindowsフォームアプリケーションを開発する際に発生するイベントには決められた順番があることについて解説しました。

Loadイベントの後にShownイベントが発生する」など意外と忘れがちなことなので、しっかりと覚えておきましょう。

 

何かと通信しているようなアプリケーションだと、切断する順番など間違えてしまうと、例外が発生することにもなりかねませんので、イベントの発生順序はこの記事を参考にして覚えてください。

本ブログでは、C#の「イベント関係」の記事が他にもあるのでよかったら見てみてください。

>> 【C#】コントロールのイベントを一時的に無効化する方法

>> 【C#】イベントハンドラの基本とは?使い方をマスターしよう

 

Kindle Unlimitedで無料で本が読める

 

Kindle Unlimitedを無料で試す

 

なら最初の30日間は無料でコーディング・デザイン・ブログ・英語・Youtubeの参考書・キャリア・副業・マーケティング・漫画・美容知識・雑誌などが読み放題です。

人気の本もあるので是非お試ししてみてください!30日以内に解約すればお金は全くかかりません。

 


最近の投稿

【今すぐ行動しよう】フリーランスエンジニアとブログの相性は抜群!

フリーランスエンジニアがスキルや経験から得たビジネスノウハウを共有する手段として「ブログ」は非常におすすめです。自身のスキルや知識のアウトプットや、実際に自分が経験したことを共有して同じような境遇の人の手助けになるような情報を公開することで自分に帰ってくるメリットは非常に多いです。今回はそのあたりについて紹介していきます。

【経験談】フリーランスのエンジニアは本当に大変なの?安定のコツやポイント

フリーランスのエンジニアは「大変だからやめとけ」という話をよく聞くので、そのことについて現役でフリーランスエンジニアとして生活している私が、その話の実態を解説しようと思います。フリーランスエンジニアの大変なところはもちろんありますが、それ以上にメリットが多いので私個人的には非常におすすめしています。

【幸福度UP】フリーランスエンジニアの「田舎暮らし」実現できます

フリーランスエンジニアとして田舎で暮らす人が増えてるって聞くけど、本当なのかな?どうやったら実現できるのか?今回はフリーランスエンジニアとして田舎で生活をしたいという方向けに、実現可能なのか、実現するにはどうすれば良いのかをご紹介します。

【単価交渉で収入アップ】フリーランスが単価交渉を成功させる4つのポイント

フリーランスが収入をアップさせるための重要な手段のひとつに「単価交渉」があります。今回は、現役でフリーランスとしてエンジニアをしている私が実践して効果のあった単価交渉の方法やコツをご紹介します。

【 今なら無料!】タスク管理ツール「Backlog」を無料で使う方法と手順

今回は、普段のタスク管理からプロジェクトの管理まで幅広く使えるツール「Backlog」を無料で使うための方法とその手段を画像つきで紹介しました。もし気に入らなければ、期間内に解約してしまえば費用はかかりません。また、以外と知られていない「フリープラン」も紹介しているので、是非参考にしてみてください。

Copyright© FUNA BLOG , 2021 All Rights Reserved.