Windows Forms
デスクトップGUIアプリケーションを構築するための.NET/.NET FrameworkのUIフレームワーク。
- 概念URI
https://comcomponent.com/knowledge/windows-forms/
- 別名・表記
- WinForms
- 下位概念
- NotifyIconクラス / Control.Invoke / Control.BeginInvoke / Control.InvokeAsync
- 最終確認日
- 2026-08-01
- 機械可読データ
- JSON-LD
この概念が関わる関係
- AxHostはWindows Formsを前提とします。AxHostはWindows Formsのコントロールとして画面に貼り付けて使うことを前提とする。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsはBinaryFormatterを利用します。WinFormsはクリップボード・drag & drop・ResX・デザイナーのシリアライズでBinaryFormatterに依存することがある / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows FormsはWindows専用API依存を利用します。WinFormsはWindows専用のままであり、周辺のWindows専用APIに依存し続けることが多い / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows Formsはbuilt-in COM interopを前提とします。WinFormsはbuilt-in COM marshallingへの依存が重い / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsをNative AOTに用いることは推奨されません。built-in COM marshallingへの依存が重いため、WinForms本体を最初のNative AOT候補にするのは慎重に見るべきとされる / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsはGeneric Hostを利用します。WinFormsアプリでも入口がMain / ApplicationContextに変わるだけでGeneric Hostの考え方はほぼ同じだが、細部はWPFと完全に同一ではない。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windowsデスクトップアプリ開発はWindows Formsを利用します。Windows FormsはWindowsデスクトップアプリ開発の技術要素の一つとして扱われる / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsはSTA(Single-Threaded Apartment)を利用します。エントリポイントに[STAThread]が付いているか、明示的にSetApartmentState(STA)を呼んでいる場合、WinForms/WPFのUIスレッドはSTAとして初期化され、UIコントロールの1スレッド親和性と一致する。既定のテンプレートは属性を付けるが、独自のエントリポイントで付け忘れるとMTAのままになる / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows Formsはメッセージループを利用します。UIスレッドはウィンドウイベントを処理するために必ずメッセージループを回しており、STAの前提を追加実装なしで満たす。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsはVisual Basic 6.0(VB6)の後継に当たります。VB6フォーム+OCXの画面資産は、.NET移行では主にWindows Formsが移行先となる(コントロールは1対1対応しない) / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows FormsはMicrosoft Edge WebView2を利用します。既存のWinForms業務アプリにWeb UIを段階的に組み込む場合、1画面だけをWebView2にするといった構成ができる。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows FormsはActiveXを利用します。WinFormsはCOMラッパーを介して既存のActiveXコントロールを利用できる。利用するかどうかはアプリの作りによる / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Reg-Free COM(登録不要COM)はWindows Formsに対する本記事の推奨です。WinForms製の既存資産をアプリローカルなCOM構成へ移す場面で、Reg-Free COMは相性がよいとされる / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- WinUI(Windows App SDK)はWindows Formsと両立しません。WinUIは既存のWinForms資産の持ち込みが容易ではない / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- 既存Windows装置ソフト資産はWindows Formsを利用します。既存Windows装置ソフト資産にはWinFormsで作られたものが含まれることがある / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- PrintDocument(WinFormsの印刷)はWindows Formsに対する本記事の推奨です。画面がWinFormsならPrintDocumentを使うのが素直な選択とされている / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsはAutomationIdを利用します。WinFormsではデザイナーで付けるControl.NameがUIA側の識別に使われ、AutomationIdとして検索できる / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- FlaUIはWindows Formsを利用します。WinFormsアプリを自動化する場合、UIA2の実装であるFlaUI.UIA2から試すのが実務の目安である / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows Formsは高DPI対応を前提とします。高DPI環境やマルチモニターで画面が崩れないようにしたい場合、WinForms、WPF、WinUIはそれぞれDPI対応の考え方が違うため、画面技術ごとにDPI awarenessの設定を確認する必要がある。DPI awarenessを設定しなくてもアプリ自体は起動するが、拡大縮小やぼやけといった表示崩れが生じる。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- WPFはWindows Formsを前提とします。WPFアプリでトレイ常駐を実装する最小構成は、csprojでUseWPFとUseWindowsFormsを併用してWinFormsのNotifyIconを使うことである / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows FormsはUSB機器のPnP通知を利用します。USB機器のPnP通知を受け取りたい場合、WinForms/WPFなど従来型デスクトップアプリでは、RegisterDeviceNotificationとWM_DEVICECHANGEの組み合わせで受け取る。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows FormsはDPI認識モードを前提とします。WinFormsアプリの高DPI対応の第一歩は、自分のアプリが今どのDPI認識モードで動いているかを把握することである。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Per-Monitor(V1)をWindows Formsに用いることは推奨されません。Per-Monitor(V1)は通知が来るだけでスケーリングを全部自前で処理する素のWin32向けの仕組みで、フレームワーク支援がなくWinFormsから選ぶ理由がない。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsはAutoScaleModeを利用します。WinFormsのフォームはDPI認識モードとは別に、AutoScaleModeという自動スケーリング機構を持つ。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows Formsは.NETの高DPI設定(ApplicationHighDpiMode/SetHighDpiMode)を利用します。.NET(Core 3.1以降)のWinFormsは、プロジェクトファイルのApplicationHighDpiModeまたはApplication.SetHighDpiModeでDPI認識モードを宣言する。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows FormsはマニフェストでのDPI宣言を利用します。.NET Framework 4.6以下やVB6/MFC混在アプリでは、マニフェストでSystem Awareを宣言するところまでが現実的な対応になる。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows Formsはapp.configでのDPI宣言を利用します。.NET Framework 4.7以降は、マニフェストでWindows 10互換を宣言したうえで、app.configのDpiAwareness設定でPer-Monitor V2などを宣言する。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows FormsはWindowsランナー(windows-latest)を前提とします。WinFormsプロジェクトはWindows専用TFMを対象とするが、EnableWindowsTargetingを有効にすればLinux上でもビルドできる。Windowsランナーが要るのは、UIに依存するdotnet testのように実行を伴う手順である。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows FormsはMSAL.NETを利用します。Entra ID認証を実装する場合、WinForms業務アプリはMSAL.NET(Microsoft.Identity.Client)を利用する。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows Formsはresxリソースファイルを利用します。多言語化する場合、WinFormsアプリは画面文字列やメッセージの入れ物としてresxリソースを使う、というのが本記事の推奨である。単一言語のアプリにはそもそも不要で、別のリソースプロバイダーを選ぶこともできる。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows Formsはデザイナー方式(Localizable=true)を利用します。WinFormsは、フォームのLocalizableプロパティを使うデザイナー方式で画面のresxを自動生成できる。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- TableLayoutPanel+AutoSizeによる可変レイアウトはWindows Formsに対する本記事の推奨です。翻訳後の文字列長でレイアウトが崩れないよう、WinFormsではTableLayoutPanelとAutoSizeを組み合わせる方法が公式に案内されている。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows Formsは右から左へ書く言語(RTL)対応で構成できます。WinFormsの右から左へ書く言語対応は、RightToLeft/RightToLeftLayoutプロパティで構成する。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsはCultureInfo.CurrentCultureを利用します。WinForms画面の日付・数値表示は、既定でCurrentCultureの書式に従う。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsはCultureInfo.CurrentUICultureを利用します。WinFormsのリソースマネージャーは、CurrentUICultureに応じて読み込む言語リソースを決める。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsはWindows App SDKを利用します。UI全面移行はせず機能だけ足したい場合、既存WinFormsアプリにも、UIを維持したままWindows App SDKの機能を追加できる。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows FormsはXAML Islandsを利用します。段階移行を小さく検証する場合、XAML Islandsは既存WinFormsアプリの一部にWinUI系のコントロールを埋め込む仕組みとしても使える。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- Windows Formsは標準コントロール中心の業務アプリに対する本記事の推奨です。標準コントロール中心・入力フォーム中心の小〜中規模な社内ツールでは、WinFormsが本記事の推奨である。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsはWinUI(Windows App SDK)より先に行うべきです。既存WinFormsアプリが大きい場合は、WinUIへの全面移行を検討するより先に、まずWinForms継続を基本に見るべきとされる。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- WindowsFormsHostはWindows Formsを利用します。WindowsFormsHostはWPFアプリの中にWindows Formsのコントロールを埋め込むための要素 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsはSynchronizationContextを利用します。WinFormsのUIスレッドにはWindowsFormsSynchronizationContextが設定されている。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsはControl.Invoke / Control.BeginInvokeを利用します。WinFormsの旧来パターンでは、UIスレッドへ処理を投げるのにControl.Invoke(同期送信)またはControl.BeginInvoke(非同期投稿、戻り値はIAsyncResult)を使う。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsはControl.InvokeAsyncを利用します。.NET 9以降のWinFormsでは、Taskを返しasyncフローと素直に噛み合うControl.InvokeAsyncが使える。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
この概念を扱う記事
一次資料
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。