Windows Forms ( WinFormsとも呼ばれる)は、Windowsデスクトップアプリケーションを構築するための無料のオープンソースのグラフィカルユーザーインターフェイス(GUI)クラスライブラリであり、Microsoft .NET、.NET Framework、またはMonoの一部として含まれており[ 2 ]、デスクトップ、ラップトップ、タブレットPC用のクライアントアプリケーションを作成するためのプラットフォームを提供します[ 3 ] 。これは、以前のより複雑なC++ベースのMicrosoft Foundation Class Libraryの代替と見なされていますが、同等のパラダイムを提供するものではなく[ 4 ] 、マルチティアソリューションのユーザーインターフェイス層のプラットフォームとしてのみ機能します[ 5 ]。
2018 年 12 月 4 日に開催されたMicrosoft Connectイベントで、 Microsoft はWindows Forms をGitHub上のオープンソース プロジェクトとしてリリースすることを発表しました。これはMIT ライセンスの下でリリースされています。このリリースにより、 .NET Coreフレームワークをターゲットとするプロジェクトで Windows Forms が利用可能になりました。ただし、フレームワークは依然として Windows プラットフォームでのみ利用可能であり、Mono の不完全な Windows Forms 実装が唯一のクロス プラットフォーム実装となっています。[ 6 ] [ 7 ]
建築

Windows Formsアプリケーションは、 Microsoftの.NET Frameworkでサポートされているイベント駆動型アプリケーションです。バッチプログラムとは異なり、テキストボックスへの入力やボタンのクリックなど、ユーザーが何らかの操作を行うのを待つことにほとんどの時間を費やします。アプリケーションのコードは、C#やVisual Basicなどの.NETプログラミング言語で記述できます。
Windows Forms は、既存のWindows API をマネージド コードでラップすることにより、ネイティブのWindows ユーザー インターフェイス共通コントロールへのアクセスを提供します。[ 8 ] Windows Forms の助けを借りて、.NET Framework は、Visual Basic や MFC よりも Win32 API のより包括的な抽象化を提供します。[ 9 ]
Windows Formsは、クライアントアプリケーション開発においてMicrosoft Foundation Class (MFC)ライブラリと類似しています。Windowsアプリケーション開発のためのC++クラス群からなるラッパーを提供しますが、MFCのような既定のアプリケーションフレームワークは提供しません。Windows Formsアプリケーション内のすべてのコントロールは、クラスの具体的なインスタンスです。
特徴
Windows Forms クラス ライブラリのすべての視覚要素は Control クラスから派生しています。これにより、位置、サイズ、色、フォント、テキストなどのユーザー インターフェイス要素の最小限の機能と、クリックやドラッグ/ドロップなどの一般的なイベントが提供されます。Control クラスには、コントロールが親要素の下で位置を再配置できるようにするためのドッキング サポートもあります。ControlクラスのMicrosoft Active Accessibilityサポートは、視覚障害のあるユーザーが Windows Forms をより使いやすくするのにも役立ちます。[ 10 ]
Visual Studio では、フォームはドラッグ アンド ドロップ操作で作成されます。ツールを使って、フォーム (ウィンドウ) 上にコントロール (テキスト ボックス、ボタンなど) を配置します。コントロールには属性とイベント ハンドラーが関連付けられています。コントロールの作成時にデフォルト値が設定されますが、プログラマーが変更することも可能です。多くの属性値は、実行時にユーザーの操作や環境の変化に基づいて変更できるため、動的なアプリケーションを実現できます。例えば、フォームのサイズ変更イベント ハンドラーにコードを挿入することで、コントロールの位置を調整し、フォームの中央に配置したり、フォーム全体に拡大表示させたりすることができます。テキスト ボックスのキー押下イベント ハンドラーにコードを挿入することで、入力されたテキストの大文字と小文字を自動的に変換したり、特定の文字の入力を制限したりすることも可能です。
Windows Forms は、ボタン、テキストボックス、チェックボックス、リストビューなどのネイティブの Windows コントロールへのアクセスを提供するだけでなく、 ActiveXホスティング、レイアウト配置、検証、およびリッチデータバインディングのための独自のコントロールを追加しました。これらのコントロールはGDI +を使用してレンダリングされます。 [ 10 ]
歴史と未来
Java API のAbstract Window Toolkit (AWT) と同様に、Windows Forms は.NET Frameworkにグラフィカル ユーザー インターフェイスコンポーネントを提供する初期の簡単な方法でした。Windows Forms は既存の Windows API をベースに構築されており、一部のコントロールは単に基盤となる Windows コンポーネントをラップしているだけです。[ 11 ]一部のメソッドでは、非 Windows プラットフォームでは利用できないWin32コールバックに直接アクセスできます。 [ 11 ]
.NET Framework 2.0 では、Windows Forms に、より豊富なレイアウト コントロール、Office 2003 スタイルのツールストリップ コントロール、マルチスレッド コンポーネント、より豊富なデザイン タイムおよびデータ バインディング サポート、 Web ベースの展開のためのClickOnce が追加されました。[ 12 ] [ 13 ]
.NET Framework 3.0 のリリースに伴い、Microsoft は GUI をレンダリングするための 2 番目の並行 API であるDirectX ベースのWindows Presentation Foundation (WPF) [ 14 ]と、 XAMLと呼ばれる GUI 宣言言語[ 15 ]をリリースしました。
Build 2014カンファレンスでの質疑応答セッションで、マイクロソフトは Windows Forms はメンテナンスモードであり、新機能は追加されないが、発見されたバグは引き続き修正されると説明した。[ 16 ]最近では、.NET Framework バージョン 4.5 のアップデートで、さまざまな Windows Forms コントロールの高 DPI サポートが改善された。[ 17 ]
XAMLとWindows Formsの下位互換性
今後の開発に向けて、Microsoft は Windows Forms に代わり、WPFやUWPなどのフレームワークを使用したXAMLベースの GUI を開発しました。しかし、Windows Forms と同様の GUI コンポーネントのドラッグ アンド ドロップによる配置は、Page/Window のルート XAML 要素を「Canvas」 UI コントロールに置き換えることで、XAML でも引き続き利用可能です。この変更を行うことで、ユーザーは Visual Studio の GUI を使用してコンポーネントを直接ドラッグ アンド ドロップすることで、Windows Forms と同様の方法でウィンドウを作成できます。
XAMLはCanvasコントロールを通じてドラッグ&ドロップによる配置の互換性を提供しますが、XAMLコントロールはWindowsフォームコントロールと似ているだけで、完全な互換性はありません。機能や外観は似ていますが、プロパティやメソッドが異なるため、一方のAPIから他方のAPIへのマッピング変更が必要になります。
代替実装
Mono は、 Ecma標準に準拠した.NET Framework互換のツールセットを作成するためにXamarin (以前はXimian、その後Novell )が主導するプロジェクトです。2011 年に、Monoの System.Windows.Forms のサポートが.NET 2.0以降で完了したと発表されました。[ 18 ] System.Windows.Forms 2.0 は Mac OS X でネイティブに動作します。[ 19 ] ただし、System.Windows.Forms は Mono 上で積極的に開発されていません。[ 20 ] Microsoft の System.Windows Forms は主にWindows API の ラッパーであり、一部のメソッドではWindows 以外のプラットフォームでは利用できないWin32コールバックに直接アクセスできるため、.NET との完全な互換性は不可能でした。 [ 11 ] Mono の WinForms 実装は、 GtkとPangoの上にGDI+を実装する Mono の libgdiplus に基づいています。[ 21 ]
より深刻な問題は、バージョン 5.2 以降、[ 22 ] Mono がアップグレードされ、デフォルトで 64 ビット プラットフォームを想定するようになったことです。しかし、Macintosh OS X プラットフォーム用の Mono 上の System.Windows.Forms は、32 ビット サブシステムCarbon を使用して構築されています。[ 23 ] この時点において、Mac OS X で使用する System.Windows.Forms の 64 ビット バージョンは利用できず、32 ビット プラットフォーム用に構築された .NET アプリケーションのみが実行可能であると予想されます。
関連項目
- Microsoft Visual Studio
- ClickOnce
- 抽象ウィンドウツールキット(AWT)は、Javaプログラミング言語におけるGUIアプリケーションプログラミングインターフェース(API)に相当するものです。
- Borland社のビジュアルコンポーネントライブラリ(VCL)
- ビジュアルテスト、テスト自動化
参考文献
- ↑ "v10.0.8" . github.com . 2026-05-12 . 2026-05-28に取得.
- ↑ Sells, Chris (2003 年 9 月 6 日). Windows Forms Programming in C# (第 1版). Addison-Wesley Professional. p. xxxviiii.
- ↑ 「Microsoft パターンとプラクティスによる Web クライアントの設計および実装ガイドライン」。Microsoft。2003 年 11 月。
- ↑ Sells, Chris; Weinhardt, Michael (2006年5月16日). 「付録B」. 『MFCからWindows Forms 2.0プログラミングへ』(第2版). Addison-Wesley Professional.
- ↑ 「Windows Forms 入門」(Visual Studio 2003 ドキュメント)。Microsoft 2003。
- ↑ Martin, Jeff (2018年12月4日). "MicrosoftがWPF、WinForms、WinUIをオープンソース化" . InfoQ . 2018年12月6日取得.
- ↑ハンセルマン、スコット (2018 年 12 月 4 日)。「WPF、WinForms、WinUI がオープンソースになることを発表」。2018年 12 月 6 日に取得。
- ↑ De Smet, Bart (2011年1月4日). 「第5章」. C# 4.0 Unleashed . Sams Publishing.
- ↑グリフィス、イアン、アダムス、マシュー(2003年3月)。NET Windows Forms in a Nutshell。O'Reilly Media。p. 4。
- 1 2グリフィス、イアン、アダムス、マシュー(2003 年 3 月)。NET Windows Forms の概要。O'Reilly Media。pp. 27–53。
- 1 2 3 「FAQ: Winforms」 mono-project.com。
実装がWindows.Formsとの完全な互換性に必要なすべてを実装する可能性は非常に低い。その理由は、Windows.Formsが完全なツールキットではないためであり、この問題を回避するために、基盤となるWin32の一部がWindowsメッセージハンドラーを公開する形でプログラマーに公開されている。
- ↑ Sells, Chris; Weinhardt, Michael (2006年5月16日). 「付録A. Windows Forms 2.0の新機能」. Windows Forms 2.0プログラミング(第2版). Addison-Wesley Professional.
- ↑ノイズ、ブライアン( 2006年1月12日)。「序文」。Windows Forms 2.0 によるデータバインディング:.NET を使用したスマートクライアントデータアプリケーションのプログラミング(第1版)。Addison-Wesley Professional。ISBN 978-81-317-4823-7。
- ↑ Hall, Gary (2010年12月27日). 「DirectX、GDI+ではない」. Pro WPF and Silverlight MVVM: モデルを使用した効果的なアプリケーション開発(2010年版). Apress. p. 2.
- ↑スミス、ジョシュ (2007-09-05)。「WPF vs. Windows Forms」。ジョシュ・スミスによるWPFに関する記事。2011-08-25に閲覧。WPFは
Windows Formsを置き換えることを意図したものではありません。[...] Windows Formsは今も健在であり、今後何年にもわたってマイクロソフトによって機能強化とサポートが続けられます。WPFは、Windowsデスクトップアプリケーション開発者が適切な場合に使用できる単なるツールです。
- ↑ 「WPFに関するQ&A」 . infoq.com. 2014年4月3日. 2014年4月21日閲覧.
Windows Formsは引き続きサポートされていますが、メンテナンスモードです。バグが発見され次第修正されますが、新機能は提供されません。
- ↑アレン、ジョナサン (2014-05-06). ".NET 4.5.2 の Windows フォームの高 DPI 改善" . InfoQ . 2015-02-10に取得.
- ↑ "WinForms" . mono-project.com . 2011年7月30日取得.
Windows Forms 2.0のサポートは完了しました。現時点では、主にバグ修正とコードの改良を行っています。
- ↑ 「WinForms」 . mono-project.com . 2011年7月30日取得。WinForms
はOSXで動作しますか? はい、Mono 1.9以降、WinFormsにはデフォルトで使用されるネイティブOSXドライバがあります。
- ↑ de Icaza, Miguel (2011-03-07). "GDC 2011" . 2011-07-30に取得。
主に OpenGL/DirectX ベースのツールについては、Windows.Forms を使用してください。ただし、Windows.Forms は積極的に開発されていないため、ツール側でバグ修正や回避策が必要になる場合があることに注意してください。
- ↑ "Mono / libgdiplus · GitLab" . GitLab .
- ↑ 「macOS での Mono 入門」 mono-project.com 2019-11-12取得。
- ↑ Martin, Jess. "Windows.Forms が 64 ビット Mac OS X に登場" . 2019-11-12に取得。
外部リンク
- MSDN: Windowsフォームアプリケーションの構築
- MSDN :Windows.Forms リファレンスドキュメント
- MSDN :Windowsフォームの技術記事 - Visual Testを使用したWindowsフォームの自動化
- .NET用語
- 2002年のソフトウェア
- 以前は独自開発のソフトウェアだった
- マイクロソフトのアプリケーションプログラミングインターフェイス
- マイクロソフトの無料ソフトウェア
- Mono(ソフトウェア)
- MITライセンスを使用するソフトウェア
- ウィジェットツールキット
- Windows専用の無料ソフトウェア
