Windows_Forms
[Wikipedia|▼Menu]

Windows Formsはマイクロソフト.NET Frameworkに含まれるグラフィカルユーザーインターフェイスAPIの名称である。日本語版の公式ドキュメント(旧MSDNライブラリ)では「Windowsフォーム」と表記されている[1]。「WinForms」と略記されることもある[2]目次

1 概要

2 コード例

3 互換実装

4 課題と将来性

5 脚注

6 関連項目

概要

Windows FormsはWindows APIGDI/GDI+)をマネージコードでラップし、Windowsユーザーインターフェイス要素へのアクセスを提供するフレームワークである。従来からVisual C++用に提供されていた、複雑なネイティブC++ベースのMFCや、旧Visual Basic(VB6)のフォームにとって代わるものとされる一方で、Windows FormsはMVCモデルを提供していない。また、シェル関連など一部のAPIに関してはラッパーが存在しないので、それらをWindows Formsで利用するためにはC++/CLI言語でラッパーアセンブリを作成するか、あるいはP/Invokeなどの手法を用いる必要がある。そのほか、MFCアプリケーションからWindows Formsコントロールを利用するなどのシナリオを想定した相互運用機能も用意されている[3][4]

Windows Formsアプリケーション開発にVisual Studioを利用することで、.NET以前のVisual BasicDelphiのように、GUI(フォームデザイナー)で簡単かつ効率的に画面作成やGUI部品の詳細な設定を行なうことができる(RAD)。これは、GUI部品の簡単な配置や簡単な設定までしかできないWin32/MFCのダイアログ エディターとは大きく異なる。作成したウィンドウ情報は、リソースファイルに変換されるのではなく、Visual Studio IDEによって直接C#Visual Basic .NETなどのソースコードに変換して出力される(コード ビハインド)。マネージ言語はIDEとの親和性が高く、Windows Formsによって生産性の高いGUIアプリケーション開発環境が提供される。

なお、Windows Formsのターゲット環境はデスクトップ アプリケーションであり、ブラウザで動作するWebアプリケーションを開発するにはASP.NETなどを利用することになる。
コード例

C#によるWindows Formsを使用したHello worldプログラムの例である。ここで、System.Windows.FormsがWindows Formsの名前空間を表す。using System;using System.Windows.Forms;public class HelloWorld{ [STAThread] public static void Main() { Form form = new Form(); form.Text = "Hello world!"; Application.Run(form); }}
互換実装

マイクロソフトによるWindows専用の.NET Frameworkベース公式実装のほか、Monoによる互換実装(通称WinForms)が存在する[5]。MonoのWinFormsは.NET 1.1/2.0互換の実装を提供するが、2017年現在の開発状況はメンテナンスフェイズとなっている。
課題と将来性

Windows Formsは.NET Framework 1.0のリリースとともに登場したが、.NET 2.0で機能追加[6]や仕様変更がなされた後は大きな変化がない。後発のデスクトップアプリケーションフレームワークであるWPFに比べると、マルチタッチやDPI Aware[7][8]などに標準で対応していないなど、最新の技術動向は反映されにくい傾向にある。.NET 4.5.1, .NET 4.5.2, .NET 4.6, .NET 4.7ではそれぞれ高DPI環境下でのWindows Formsコントロールのリサイズに関する機能が徐々に拡張・改善されているが、既定ではなくオプトインである[9][10]

また、Visual C++にはバージョン2010までWindows Formsのアプリケーションプロジェクトテンプレートが存在していたが、バージョン2012以降は削除されている。もともとVisual C++においてマネージコンポーネントであるWindows Formsを扱うにはC++/CLI言語を使用する必要があったが、C++/CLIはマネージコードとアンマネージコードの相互運用を行なうグルー言語用途としてのみ使用することが推奨されている[11]

しかし、後継となるWPFはMFCやWindows Formsの完全なスーパーセットではなく、一部は同等機能が用意されていない。Win32/MFCやWindows Formsで作成されたコード資産を再利用するため、WPFアプリケーションでもWin32/MFCやWindows Formsとの連携を行なうシナリオを想定した相互運用機能が用意されている[12][13][14][15]

.NET Core 3.0では、Windows版限定ではあるがWPFとともにWindows Formsが実装された[16].NET Frameworkのメジャーアップデートは4.8で最後となるが、メンテナンスは継続される。
脚注^ Windows フォーム 。Microsoft Docs
^Windowsフォーム開発に最適なコンポーネントセット - ComponentOne Studio for WinForms 。グレープシティ コンポーネント製品
^ Using a Windows Form User Control in MFC 。Microsoft Docs
^ MFC での Windows フォーム ユーザー コントロールの使用 。Microsoft Docs
^WinForms 。Mono
^@IT:特集 .NET Framework 2.0のWindowsフォーム新機能(前編)
^ アプリの高DPI(High DPI)対応について 第2回 ? アプリケーションの高DPIへの対応レベル ? ? 田中達彦のブログ
^ Windows フォーム アプリの DPI Aware への変更 言語: XML
^ アプリの高DPI(High DPI)対応について 第1回 ? 高DPIとは ? ? 田中達彦のブログ
^ What's new in the .NET Framework 。Microsoft Docs
^ Visual Studio 2012、2013 で Visual C++ の Windows フォーム アプリケーション テンプレートが削除され、新規に作成できない
^ WPF and Win32 Interoperation 。Microsoft Docs
^ Walkthrough: Hosting a Windows Forms Control in WPF 。Microsoft Docs
^ WPF と Win32 の相互運用性に関する概要 。Microsoft Docs
^ チュートリアル : Windows Presentation Foundation での Windows フォーム コントロールのホスト 。Microsoft Docs
^ Windows Forms アプリを .NET Core 3.0 に移植する - .NET Core 。Microsoft Docs

関連項目

基本クラスライブラリ

Visual Component Library

Windows Presentation Foundation

この項目は、コンピュータに関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めていますPJ:コンピュータ/P:コンピュータ)。










.NET Frameworkカテゴリ
アーキテクチャ

共通言語基盤

アセンブリ

メタデータ

基本クラスライブラリ

仮想実行システム

共通言語基盤

共通言語ランタイム

共通型システム

共通中間言語

動的言語ランタイム

言語

C#

Visual Basic .NET

C++/CLIマネージ拡張


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:22 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef