| 型 | プロパティ | 内容 |
|---|---|---|
| Form | ActiveForm | このアプリケーションで、現在アクティブなフォーム。アクティブなフォームがないときはnullで、そのときはこのアプリケーション自体がアクティブではない |
| 型 | プロパティ | 内容 |
|---|---|---|
| bool | IsMdiContainer | trueならば、FormはMDI子フォームのコンテナ。既定はfalse |
| Point | Location | スクリーン座標の左上の位置
表示前にこれを指定する場合、StartPositionがManualでなければ無視される。 |
| Size | Size | フォームのサイズ |
| Size | MinimumSize | フォームをリサイズするときの最小サイズ
この制限を無効化するには、Size.Empty (0x0の大きさ) を設定する |
| Size | MaximumSize | フォームをリサイズするときの最大サイズ
この制限を無効化するには、Size.Empty (0x0の大きさ) を設定する |
| AutoSizeMode | AutoSizeMode | フォームを自動的にサイズ変更するときに使用するモード |
| FormStartPosition | StartPosition | 実行時に、フォームを最初に表示する位置とサイズ |
| Size | ClientSize | フォームのクライアント領域のサイズ |
| Rectangle | Bounds | コントロールのサイズと位置。サイズは非クライアント要素を含む、位置は親コントロール相対 |
| Rectangle | DesktopBounds | デスクトップ座標でのフォームのサイズと位置。デスクトップ座標とは、タスクバーを除いたスクリーンの作業領域 |
| Point | DesktopLocation | デスクトップ座標でのフォームの位置 |
| FormBorderStyle | FormBorderStyle | フォームの境界線 |
| SizeGripStyle | SizeGripStyle | フォーム右下に表示するサイズ グリップの様式
|
| bool | ShowInTaskbar | trueならば、フォームをタスクバーに表示する。既定はtrue
FormBorderStyleを**ToolWindowとするときは、これをfalseとする。 |
| bool | ShowIcon | trueならば、フォームのキャプションバー (タイトルバー) にアイコンが表示される |
| Icon | Icon | フォームのアイコン |
| bool | ControlBox | trueならば、フォームのキャプションバーにコントロールボックスが表示される |
| bool | MinimizeBox | trueならば、フォームのキャプションバーに最小化ボタンが表示され、システムメニューの[最小化]が有効となる (最大化ボタンが表示されているならば、非表示ではなく無効になる) |
| bool | MaximizeBox | trueならば、フォームのキャプションバーに最大化ボタンが表示され、システムメニューの[最大化]が有効となる (最小化ボタンが表示されているならば、非表示ではなく無効になる) falseにすると、キャプションバー のダブルクリックによる最大化が無効になる |
| bool | TopMost | trueならば、最上位 (topmost) に表示される |
| bool | TopLevel | trueならば、トップレベル ウィンドウとして表示する |
| FormWindowState | WindowState | フォームが最小化、最大化または通常の状態であるか |
| DialogResult | DialogResult | フォームがダイアログ ボックスとして使用されたときの結果。モーダルとして表示されているとき、これに設定するとフォームは非表示になり、結果が呼び出し元へ返される |
| IButtonControl | AcceptButton | Enterが押されたときにクリックされるボタン。そのボタンのDialogResultプロパティがNone以外に設定されていると、フォームは閉じられる |
| IButtonControl | CancelButton | Escが押されたときにクリックされるボタン。そのボタンのDialogResultプロパティがNone以外に設定されていると、フォームは閉じられる |
| bool | KeyPreview | trueならば、フォーカスのあるコントロールへキーイベントが渡される前に、フォームがそれを受け取る |
| bool | AutoScroll | trueならば自動スクロール (autoscrolling) が有効で、コントロールがクライアント領域外にあるときにスクロール バーが表示される。既定はfalse |
| Point | AutoScrollPosition | 自動スクロールの位置 |
| bool | VScroll | trueならば、垂直スクロール バーが表示されている |
| bool | HScroll | trueならば、水平スクロール バーが表示されている |
| Color | TransparencyKey | フォームの透明な領域を表す色。BackColorと同じ色を指定するとその部分が透明になり、背景にある他のウィンドウが表示されるようになる。またマウスのクリックも透過される |
| Form | Owner | フォームを所有しているフォーム |
| Form[] | OwnedForms | フォームを所有しているすべてのフォーム |
| ControlCollection | Controls | フォームに格納されているコントロールのコレクション |
| Control | ActiveControl | コンテナ コントロール上で、現在アクティブなコントロール |
| AutoValidate | AutoValidate | フォーカスが変更されたときに、コンテナのコントロールを自動的に検証する方法。既定はInherit |
| ︙ |
Form.StartPosition プロパティ (System.Windows.Forms) | MSDN
| 列挙子 | 表示位置 | サイズ |
|---|---|---|
| CenterParent ※1 | 親フォームの境界内の中央 | |
| CenterScreen | 現在の表示の中央 | 指定された大きさ |
| Manual | Locationプロパティの値 | |
| WindowsDefaultBounds | Windowsの既定位置 | 既定の大きさ WindowsDefaultBounds - Form.cs |
| WindowsDefaultLocation (既定) | 指定された大きさ |
※1 CenterParentの指定は、Formがモードレスとして表示されたときには適切に設定されません。そのような場合にはManualに指定し、次のように手動で計算します。c# - How to CenterParent a non-modal form - Stack Overflow
protected override void OnLoad(EventArgs e)
{
if (Owner != null)
{
Location = new Point(
Owner.Location.X + (Owner.Width - Width) / 2,
Owner.Location.Y + (Owner.Height - Height) / 2);
}
}
| 列挙子 | 境界線 | サイズの変更 |
|---|---|---|
| None | なし | × |
| Fixed3D | 3次元の境界線 | × |
| FixedDialog | ダイアログ様式の境界線 | × |
| FixedSingle | 単一の境界線 | × |
| FixedToolWindow | サイズ変更不可能な、ツールウィンドウの境界線 | × |
| SizableToolWindow | サイズ変更可能な、ツールウィンドウの境界線 | ○ |
| Sizable | サイズ変更可能な、境界線 [既定] | ○ |
FormBorderStyleをFixedToolWindowまたはSizableToolWindowにすると最小化と最大化のボタンが表示されなくなりますが、これはそれらが機能しなくなるわけではなく、システムメニューからは操作できます。よってそれらの機能を無効にしたいのならば、MinimizeBoxとMaximizeBoxプロパティをfalseに設定します。
キャプションバー (タイトルバー) 左端の領域であるコントロール/システム メニュー ボックスと、タスクバーに表示されるアイコンを指定できます。フォームの左上(コンボボックス)やタスクバーに表示されるアイコンを変更する - .NET Tips (VB.NET,C#...)
このアイコンとするIconクラスはアイコン ファイル (*.ico) から作成でき、そのファイルには16x16、24x24、32x32、48x48、256x256のサイズのアイコンを含めるようにします。アイコンのスケーリング - Windows アプリのアイコンを作成する - Windows apps | Microsoft Learn
実行ファイルのアイコンはこの指定とは異なり、プロジェクトのプロパティの[アプリケーション]タブのリソースで指定します。アプリケーションのアイコンを変更する - .NET Tips (VB.NET,C#...)
コントロールの自動スケーリング モードを設定または取得できます。Form上のコントロールの大きさが意図したとおりにならないときには、この設定を確認します。ContainerControl.AutoScaleMode Property (System.Windows.Forms) | Microsoft Learn
| 列挙子 | 数値 | 意味 | 備考 |
|---|---|---|---|
| None | 0 | 自動スケーリングは無効 | |
| Font | 1 | クラスが使用するフォントのサイズに応じてスケールを制御 | 通常はシステム フォント |
| Dpi | 2 | ディスプレイの解像度に応じてスケールを制御 | 一般的な解像度は、96と120dpi |
| Inherit | 3 | クラスの親のスケーリング モードに従ってスケールを制御 | 親が存在しない場合、自動スケーリングは無効 |
TopLevelがfalseのFormに設定すると「トップレベルのコントロールにのみ、オーナーを指定できます。」としてArgumentExceptionが投げられます。Owner - Form.cs
| メソッド | 機能 |
|---|---|
| Show() | コントロールを表示する。Control.Show()が呼ばれるだけであり、Visibleをtrueとすることと同じ |
| Show(IWin32Window) | コントロールを表示する。引数がOwnerプロパティに設定され、Visibleがtrueとなる |
| ShowDialog(IWin32Window) | モーダル ダイアログボックスとして、コントロールを表示する。 |
| Hide() | コントロールを隠す。Control.Hide()が呼ばれるだけであり、Visibleをfalseとすることと同じ |
| Close() | フォームを閉じる |
| Activate() | フォームにフォーカスを設定する |
| OnLoad(EventArgs) | Loadイベントを発生する |
| OnShown(EventArgs) | Shownイベントを発生する |
| OnFormClosing(FormClosingEventArgs) | FormClosingイベントを発生する |
| ProcessCmdKey(Message, Keys) | コマンドキーを処理できる。これでアクセラレータやメニューのショートカットの、処理を上書きできる |
| ProcessDialogKey(Keys) | ダイアログボックス キーを処理できる。これでダイアログボックスのEnterやEscキーの、処理を上書きできる |
| ︙ |
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// フォームが読み込まれる
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
}
// フォームが初めて表示される (ただしShowDialog()で表示されたときは、2回目以降も発生する)
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
}
// フォームが閉じられようとしている (ただしShowDialog()で表示されたときは、2回目以降も発生する)
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
}
}
このメソッドの呼び出しは、Ownerプロパティを設定してShow()を呼び出すのと同じです。 Remarks - Form.Show(IWin32Window) Method (System.Windows.Forms) | Microsoft Learn Show - Form.cs
モードレス ウィンドウとして表示されているときはリソースが解放されるため、Show()などで再び表示することはできません。表示しようとすると「破棄されたオブジェクトにアクセスできません。」として、ObjectDisposedExceptionが投げられます。
モーダルとして表示しているときにDialogResultを設定せずClose()で閉じるとDialogResult.Cancelに設定されるため、他の値とするならばDialogResultを設定することでウィンドウを閉じます。
アクセラレータやメニューのショートカットなどの、コマンドキーを処理できます。このメソッドはそれらのキー入力を上書きする場合に有用です。
protected override bool ProcessCmdKey (
ref System.Windows.Forms.Message msg,
System.Windows.Forms.Keys keyData
);
Form.ProcessCmdKey(Message, Keys) メソッド (System.Windows.Forms) | Microsoft Learn
たとえば、他のFormへキーを送ることに利用できます。c# - Send Keyboard Events from one Form to another Form - Stack Overflow
| 型 | イベント | 発生タイミング |
|---|---|---|
| EventHandler | Load | フォームを読み込むとき
ShowDialog()で表示されたときは、表示されるたびに発生する |
| EventHandler | Shown | フォームが最初に表示されたとき Windowsフォームの表示直後に初期化処理を行うには?[2.0のみ、C#、VB] - @IT 遠藤孝信 (2006/07/07)
ShowDialog()で表示されたときは、表示されるたびに発生する |
| CancelEventHandler | ||
| FormClosingEventHandler | FormClosing | フォームが閉じられようとしているとき
ShowDialog()で表示されたときは、閉じられるたびに発生する |
| EventHandler | ||
| FormClosedEventHandler | FormClosed | フォームが閉じられた後
ShowDialog()で表示されたときは、閉じられるたびに発生する |
| EventHandler | Activated | フォームがアクティブにされたとき |
| EventHandler | Deactivate | フォームが非アクティブにされたとき |
| 型 | イベント | 発生タイミング |
|---|---|---|
| EventHandler | Enter | コントロールがフォーカスを得たとき |
| EventHandler | GotFocus | コントロールがフォーカスを受けたとき |
| EventHandler | Leave | コントロールから入力フォーカスが離れたとき |
| EventHandler | LostFocus | コントロールがフォーカスが失ったとき |
| 型 | イベント | 発生タイミング |
|---|---|---|
| EventHandler | Resize | コントロールがリサイズされたとき |
| EventHandler | ResizeBegin | フォームがリサイズモードに入ったとき。このモードへは、フォームの境界がドラッグされたときなどになる
また、フォームが移動されたときにも発生する |
| EventHandler | ResizeEnd | フォームがリサイズモードを抜けたとき |
| ScrollEventHandler | Scroll | ユーザーまたはコードが、クライアント領域をスクロールしたとき |
| KeyEventHandler | KeyDown | フォームにフォーカスがあるときに、キーが押されたとき。Control.KeyDownの継承
フォームにフォーカスを得るコントロールがあるときは、KeyPreviewをtrueとしなければこのイベントは発生しない |
Formが表示される直前でなければ確定していない情報に依存する処理は、このハンドラ内に記述します。c# - What setup code should go in Form Constructors versus Form Load event? - Stack Overflow
このイベントはShow()で表示したときは最初に表示される直前にだけ発生し、非表示にしてからShow()で再び表示しても発生しません。一方でShowDialog()で表示したときは、非表示にした後もShowDialog()を呼ぶたびに発生します。これはShownイベントも同様であり、FormClosingとFormClosedはShowDialog()が終了するたびに発生します。c# - Form.Load event triggered every time - Stack Overflow
閉じられる理由はハンドラのe.CloseReasonで確認でき、e.Cancelをtrueとするとフォームは閉じられません。Form.FormClosing イベント (System.Windows.Forms) | Microsoft Learn
| 列挙子 | 値 | フォームが閉じられる理由 |
|---|---|---|
| None | 0 | 未定義または特定できない理由 |
| WindowsShutDown | 1 | OSがシャットダウン前にすべてのアプリケーションを閉じるため
WM_QUERYENDSESSIONまたはWM_ENDSESSIONメッセージが通知されたとき WindowsShutDown - Form.cs |
| MdiFormClosing | 2 | このMDIフォームの、親フォームが閉じられるため |
| UserClosing | 3 | ユーザーによってUIを通して閉じられるため
閉じるボタンのクリックや、ウィンドウのメニューやAlt+F4など。Close()の呼び出しもこれに該当する |
| TaskManagerClosing | 4 | タスクマネージャーによって閉じられるため
taskkillコマンドもこれに該当する Windows 8.1以降ではタスクマネージャーがタスクを終了するときにWM_SYSCOMMANDメッセージを発行するようになったため、UserClosingと通知される Fields - CloseReason Enum (System.Windows.Forms) | Microsoft Learn winforms - 'End Task' in Task Manager always sets CloseReason.UserClosing - Stack Overflow |
| FormOwnerClosing | 5 | 親フォームが閉じられるため |
| ApplicationExitCall | 6 | Application.Exit()またはRestart()が呼び出されたため
例外を捕捉しなかったことで異常終了するときも、これに該当する |
閉じられたFormにアクセスすると「破棄されたオブジェクトにアクセスできません。」として、System.ObjectDisposedException例外が発生します。
このイベントは、次のときに発生します。Remarks - Form.FormClosed Event (System.Windows.Forms) | Microsoft Learn
Ownerプロパティが設定されていないと、所有しているフォームが閉じられるときに、FormClosingとFormClosedは自動で呼ばれません。
Form form = new Form();
form.Shown += delegate { }; // 呼ばれる
form.FormClosing += delegate { }; // 呼ばれない
form.FormClosed += delegate { }; // 呼ばれない
//form.Show(this); // Owner設定あり
form.Show(); // Owner設定なし
Formが表示されているディスプレイのDPIが変更されるか、DPIの異なるディスプレイにFormが移動されたときに発生します。Form.DpiChanged イベント (System.Windows.Forms) | Microsoft Learn
このイベントは、WM_DPICHANGEDメッセージが送られたときに発生します。WM_DPICHANGED メッセージ (WinUser.h) - Win32 apps | Microsoft Learn
DPIの変更に応じるならば、アプリケーションで高DPI対応であることを宣言します。
ControlへFormを追加するときに「トップレベルのコントロールをコントロールに追加できません。」としてArgumentException例外が発生するときには、そのFormのTopLevelプロパティをfalseに設定します。c# - Top-level control cannot be added to a control - Stack Overflow
Form form1 = new Form();
Form form2 = new Form();
form1.TopLevel = false;
form2.Controls.Add(form1); // ArgumentException