.NET & Control > Formクラス概要
のぶ亭『プログラミングの相談窓口』 … 様々なプログラミング問題を個別対応致します |
Formクラス概要
プロパティ操作により
- アプリケーションで使用するあらゆるウィンドウ(画面)形態をサポート
- 一般的なウィンドウ
- ツールを格納する標準的な境界線のないフローティング ウィンドウ
- ダイアログ ボックスなどのモーダル ウィンドウ
- 古いUIであるマルチ ドキュメント インターフェイス (MDI: Multiple Document Interface) ウィンドウ
- 外観、サイズ、色、およびウィンドウ管理機能
- タイトル バーに表示するウィンドウのキャプション
- ウィンドウを表示するときのサイズと位置
- フォーム上に配置されるすべてのコントロールの既定の前景色
- 実行時
- フォーム状態(最小化、最大化、通常)
- フォームサイズの変更許可
プロパティの詳細は、主要プロパティの解説を参照
メソッド操作により
- ShowDialogメソッドは、フォームをモーダル ダイアログ ボックスとして表示する
- SetDesktopLocationメソッドは、デスクトップ上のフォームの位置を設定する
Formクラスの継承
継承図
メンバー一覧
以下のメンバー一覧は、Formクラスで実装されたもので、継承元のメンバーは含まれていない。
プロパティ | メソッド | イベント | クラス内クラス(入れ子にされた型) |
Formのイベント発生
フォームを起動したときのイベントの発生順
以下に、コンストラクタ完了後のイベント発生を示す。
- Move (Control)
- StyleChanged (Control)
- Layout (Control)
- Load
- Layout (Control)
- Shown
フォームが完全に表示されたタイミングで、初期化などの処理をしたい場合
まれに、フォームが表示されたタイミングで、何らかの処理を行いたい場合がある。通常は、Shownイベントハンドラで対応すればいい。(なお、このイベントを知らない人がいる。そのため・・・)
上記のイベント発生順の通り、Shownイベントが発生した後は、オペレーションされない限りなんのイベントも発生しない。
Loadイベントは、フォーム表示前に発生するため対応できない。そのため、LoadイベントハンドラでTimerを起動し、Timerのイベントハンドラに処理コードを書いて対処する方法もある。
Timerは、指定された周期でWindowsのWM_TIMERメッセージを発行するもの。これは、周期的に何らかの処理を行いたいと思うのが普通。上記の様な使い方は、直感的に理解しにくい。プログラムには、シナリオが重要で、違和感を覚えるコードは書かないことをお勧めする。
フォームを終了するときのイベント発生順
以下に、終了ボタンクリック後のイベント発生順を示す。
- FormClosing
- FormClosed
終了イベント時の状態を判断する
基本的に、終了時点ですべての必要な処理(データ保存など)を行っているはずなので「そのまま終了する」場合は問題がないと思われる。
問題は、データ未保存の場合で、終了の状態から判断してテンポラリ保存するなどの対策が必要なケースもある。もちろん、再開時には、テンポラリがあることをユーザーに知らせて、正式に保存する処理を行ったりする。
FormClosingイベント、およびFormClosedイベントの引数に「CloseReason」プロパティが含まれている。
CloseReason列挙体
メンバ名 | 説明 |
None | フォームが閉じられる理由が定義されなかったか、確認できなかった。 |
WindowsShutDown | OSによるシャットダウン |
MdiFormClosing | MDIフォームの親フォームが閉じられようとしている |
UserClosing |
ユーザーが、ユーザー インターフェイス (UI) を通じてフォームを閉じようとしている。
|
TaskManagerClosing | Microsoft Windows タスク マネージャがアプリケーションを終了しようとしている |
FormOwnerClosing | 所有側のフォームが閉じられようとしている |
ApplicationExitCall | Application クラスの Exit メソッドが呼び出された |