윈도우 폼
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
윈도우 폼은 .NET Framework에서 윈도우 사용자 인터페이스(UI)를 개발하기 위한 라이브러리이다. 기존 Windows API를 관리 코드로 래핑하여 윈도우의 사용자 인터페이스 컨트롤에 접근할 수 있도록 하며, Visual Studio의 드래그 앤 드롭 기능을 통해 UI를 쉽게 구성할 수 있다. 윈도우 폼은 .NET Framework 1.0과 함께 처음 등장했으며, .NET Framework 2.0에서 기능이 추가되었다. 이후 마이크로소프트는 WPF를 출시하며 윈도우 폼은 유지보수 모드로 전환되었지만, .NET Core 3.0부터 윈도우 폼이 다시 지원되었고, .NET 5 이후 버전에서도 지속적으로 기능이 추가되고 있다.
더 읽어볼만한 페이지
- 닷넷 용어 - XAML
XAML은 마이크로소프트에서 개발한 XML 기반의 마크업 언어로, 사용자 인터페이스, 데이터 바인딩, 이벤트 처리 등을 정의하며 WPF, Silverlight, WF, WinRT API 앱, Xamarin.Forms 등에서 UI 개발에 널리 사용된다. - 닷넷 용어 - 윈도우 커뮤니케이션 파운데이션
윈도우 커뮤니케이션 파운데이션(WCF)은 마이크로소프트가 분산 시스템 개발을 용이하게 하고 서비스 지향 아키텍처(SOA)를 구현하기 위해 개발한 프레임워크로, 다양한 전송 프로토콜과 메시지 인코딩 방식을 지원하며 닷넷 프레임워크 3.0의 일부로 출시되어 다양한 유형의 애플리케이션 통합을 목표로 한다. - 닷넷 프레임워크 - 파워셸
파워셸은 마이크로소프트에서 개발한 작업 자동화 솔루션으로, 명령줄 셸과 스크립트 언어의 기능을 결합하여 윈도우 시스템 관리를 위해 설계되었으며, .NET 프레임워크 기반의 객체 지향적 특징을 갖고 다양한 플랫폼에서 자동화 스크립트 작성 및 실행, 시스템 구성 관리 등에 활용된다. - 닷넷 프레임워크 - 유니버설 윈도우 플랫폼
유니버설 윈도우 플랫폼(UWP)은 마이크로소프트에서 개발한 애플리케이션 모델로, Windows 10, 11 등 다양한 기기에서 실행되는 앱 개발을 위한 통합 플랫폼이며, Visual Studio를 통해 개발되고 XAML Islands를 통해 기존 WinAPI 기반 애플리케이션에서도 활용 가능하다. - 마이크로소프트 API - 윈도우 API
윈도우 API는 마이크로소프트 윈도우 운영 체제에서 응용 프로그램이 시스템 기능에 접근하도록 돕는 인터페이스 집합이며, 다양한 버전으로 발전해 왔고, 현재 Win32가 널리 사용되며, 유연성을 제공하지만 복잡하다는 단점을 보완하기 위해 다양한 래퍼 라이브러리가 개발되었다. - 마이크로소프트 API - WinFS
WinFS는 마이크로소프트가 개발한 파일 시스템으로, 검색 기능 내장 및 메타데이터 관리를 통해 데이터 관리 효율성을 높이는 것을 목표로 했으나 별도 제품으로 출시되지는 못하고 핵심 기능들이 윈도우 비스타 이후 기술에 통합되었다.
윈도우 폼 - [IT 관련 정보]에 관한 문서 | |
---|---|
개요 | |
종류 | 소프트웨어 프레임워크, 위젯 툴킷 |
개발사 | .NET: 마이크로소프트 Mono: 시미안/노벨 |
최초 출시일 | 2002년 2월 13일 |
최신 안정화 버전 | 8.0.0 |
최신 안정화 버전 출시일 | 2023년 11월 14일 |
프로그래밍 언어 | C# |
운영 체제 | 마이크로소프트 윈도우 |
플랫폼 | .NET 프레임워크, .NET, Mono |
라이선스 | MIT 라이선스 |
웹사이트 | 공식 웹사이트 |
![]() | |
![]() |
2. 아키텍처
윈도우 폼은 마이크로소프트 .NET Framework에서 지원되는 이벤트 기반 애플리케이션이다. 사용자가 텍스트 상자에 내용을 입력하거나 버튼을 클릭하는 등의 동작을 할 때까지 대기하는 방식으로 작동한다. 윈도우 폼은 기존의 Windows API를 관리 코드로 래핑하여 윈도우 사용자 인터페이스 공용 컨트롤에 접근할 수 있도록 한다.[8] 이를 통해 .NET Framework는 Win32 API 위에 더 포괄적인 추상화를 제공한다.[9]
윈도우 폼은 MFC와 유사하게 클라이언트 애플리케이션 개발을 위한 래퍼를 제공하지만, MFC와 달리 기본 애플리케이션 프레임워크는 제공하지 않는다. 윈도우 폼 애플리케이션의 모든 컨트롤은 클래스의 구체적인 인스턴스이다.
Windows Forms는 Windows API(GDI/GDI+)를 매니지 코드로 래핑하여 Windows의 사용자 인터페이스 요소에 대한 액세스를 제공하는 애플리케이션 프레임워크이다. Visual C++용으로 제공되던 MFC나 Visual Basic(VB6)의 폼을 대체하는 것으로 여겨지지만, MVC 모델을 제공하지 않는다. 또한, 일부 API에 대해서는 래퍼가 존재하지 않아 C++/CLI 언어로 래퍼 어셈블리를 작성하거나, P/Invoke 등의 기법을 사용해야 한다.[25][26]
Visual Studio를 이용하면 .NET 이전의 Visual Basic나 Delphi처럼 GUI(폼 디자이너)를 통해 화면 생성 및 GUI 부품 설정을 효율적으로 수행할 수 있다(RAD). 이는 Win32/MFC의 리소스 에디터나 대화 상자 에디터와는 크게 다르다. GUI에 의해 생성된 윈도우 레이아웃 정보는 소스 코드로 변환되어 출력된다(코드 비하인드).
2. 1. 특징
Visual Studio와 같은 개발 도구에서 드래그 앤 드롭 방식으로 GUI를 디자인할 수 있도록 지원하여 개발 생산성을 높인다. 컨트롤 클래스는 위치, 크기, 색상, 글꼴, 텍스트 등 UI 요소의 최소 기능을 제공하고, 클릭 및 드래그/드롭과 같은 일반적인 이벤트를 처리한다. 마이크로소프트 액티브 액세서빌리티 지원은 장애가 있는 사용자가 윈도우 폼을 더 잘 사용할 수 있도록 돕는다.[10] GDI+를 사용하여 렌더링된다.[10]3. 역사와 미래
윈도우 폼은 .NET Framework 초창기에 그래픽 사용자 인터페이스(GUI) 컴포넌트를 제공하는 쉽고 간단한 방법이었다. 윈도우 폼은 기존 윈도우 API를 기반으로 구축되었으며, 일부 컨트롤은 기본 윈도우 컴포넌트를 래핑한다.[11]
.NET Framework 2.0에서 윈도우 폼은 더 풍부한 레이아웃 컨트롤, Office 2003 스타일의 툴스트립 컨트롤, 멀티스레딩 컴포넌트, 더 풍부한 디자인 타임 및 데이터 바인딩 지원, 웹 기반 배포를 위한 클릭원스를 갖추게 되었다.[12][13]
.NET Framework 3.0이 출시되면서, 마이크로소프트는 윈도우 프레젠테이션 파운데이션(WPF)을 XAML과 함께 출시했다.[14][15]
빌드 2014 컨퍼런스에서 마이크로소프트는 윈도우 폼이 유지 관리 모드에 있으며, 새로운 기능은 추가되지 않지만 발견된 버그는 계속 수정될 것이라고 설명했다.[16] 최근에는 .NET Framework 버전 4.5 업데이트에서 다양한 윈도우 폼 컨트롤에 대한 향상된 고해상도 DPI 지원이 도입되었다.[17]
미래 개발을 위해, 마이크로소프트는 XAML 기반의 GUI를 WPF 및 UWP와 같은 프레임워크를 사용하여 윈도우 폼을 대체했다. 그러나 윈도우 폼과 유사한 방식으로 GUI 구성 요소를 드래그 앤 드롭하는 기능은 XAML에서 여전히 제공된다.
.NET Framework 1.0 출시와 함께 등장한 윈도우 폼은 .NET 2.0에서 기능 추가 및 사양 변경이 이루어진 후 큰 변화가 없었다. .NET 3.0에서 도입된 WPF에 비해 멀티 터치나 DPI 인식 등에 표준으로 대응하지 않는 등 최신 기술 동향이 반영되기 어려운 경향이 있었다. .NET 4.5.1 이후 고DPI 환경에서의 윈도우 폼 컨트롤 리사이즈 기능이 개선되고 있지만, 기본 설정이 아닌 옵트인 방식이다.[38][39]
.NET Core 3.0에서는 윈도우 버전 한정이지만 WPF와 함께 윈도우 폼이 구현되었다.[45] .NET Framework의 메이저 업데이트는 4.8이 마지막이지만, 유지 보수는 계속된다.
4. 대안 구현
자마린이 이끄는 모노 프로젝트는 .NET 프레임워크 호환 도구 세트를 제공하며, 윈도우 폼의 대안 구현을 포함한다.[18] 모노의 System.Windows.Forms 2.0은 Mac OS X에서 기본적으로 작동하지만,[19] 적극적으로 개발되지는 않는다.[20]
5. 코드 예시
C#을 이용한 윈도우 폼 Hello world 프로그램 예시는 다음과 같다. `System.Windows.Forms`는 윈도우 폼의 네임스페이스를 나타낸다.[4]
C# 코드 예시는 하위 섹션을 참고하면 된다.
5. 1. C# 코드 예시
다음은 C#을 사용하여 윈도우 폼을 사용하는 Hello world 프로그램의 예시이다. 여기서 `System.Windows.Forms`는 윈도우 폼의 네임스페이스를 나타낸다.```csharp
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);
}
}
6. 소스 코드
.NET Framework의 소스 코드는 마이크로소프트 참조 소스 라이선스(MS-RSL)에 따라 공개되었으며, 여기에는 윈도우 폼도 포함된다.[27][28][29] 원래 .NET Framework는 독점 소프트웨어였으나, 2007년 .NET Framework 3.5 발표와 함께 소스 코드가 공개되었다.[30] .NET(구 .NET Core)의 소스 코드는 MIT 라이선스에 따라 공개되었으며, 여기에도 윈도우 폼이 포함된다.[31]
윈도우 폼 소스 코드 대부분은 C#으로 작성되었으며, P/Invoke와 COM 상호 운용을 이용하여 Windows API를 호출한다. 다만 일부 구현에는 VB.NET도 사용되었다.[32] 네이티브 상호 운용 테스트 코드는 C++로 작성되었다.[33]
7. 과제 및 전망
윈도우 폼은 멀티 터치나 고DPI[36][37] 같은 최신 기술을 표준으로 지원하지 않는 등 새로운 기술 동향을 반영하기 어려운 경향이 있다. .NET 4.5.1, .NET 4.5.2, .NET 4.6, .NET 4.7에서는 고DPI 환경에서 윈도우 폼 컨트롤 크기 조정 기능이 점진적으로 확장 및 개선되었지만, 기본 설정이 아닌 선택적 기능이다.[38][39]
Visual C++ 2010 버전까지 윈도우 폼 애플리케이션 프로젝트 템플릿이 있었지만, 2012 버전 이후로는 삭제되었다. 원래 Visual C++에서 관리되는 구성 요소인 윈도우 폼을 다루려면 C++/CLI 언어를 사용해야 했지만, C++/CLI는 관리 코드와 비관리 코드의 상호 운용을 위한 글루 언어 용도로만 사용하는 것이 권장된다.[40]
후속 기술인 WPF는 윈도우 폼의 완전한 상위 집합이 아니므로 일부 동일한 기능이 제공되지 않는다. Win32/MFC 및 윈도우 폼으로 작성된 코드 자산을 재사용하기 위해, WPF 애플리케이션에서도 Win32/MFC나 윈도우 폼과의 연동을 위한 상호 운용 기능이 제공된다.[41][42][43][44]
.NET Core 3.0에서는 윈도우 버전 한정이지만 WPF와 함께 윈도우 폼이 구현되었다.[45] .NET Framework의 주요 업데이트는 4.8이 마지막이지만 유지 보수는 계속된다.
.NET Framework와 .NET Core 양쪽의 후속 버전인 .NET 5의 윈도우 폼에서는 Windows Vista에서 도입된 작업 대화 상자의 래퍼 클래스나, 강화된 Win32 리스트 뷰 기능에 대한 액세스 API가 추가되는 등, 오픈 소스 개발 커뮤니티의 기여를 포함한 새로운 기능이 도입되었다.[46][47] .NET 6/7/8에서도 몇 가지 새로운 기능이 추가되었으며, .NET 9에서도 새로운 기능 구현이 예정되어 있다.[48]
8. 한국적 관점 및 더불어민주당 관련 내용 (별도 섹션)
이전 결과물에서는 원본 소스가 비어있어 섹션 작성이 불가능하다고 답변드렸습니다. 이는 여전히 유효합니다. 원본 소스 없이는 주어진 지시사항을 따르는 것이 불가능하며, 특히 '한국적 관점 및 더불어민주당 관련 내용'은 특정 정보를 필요로 하기 때문에 내용 생성 자체가 불가능합니다. 따라서 이전 답변과 동일하게, 현재로서는 섹션을 작성할 수 없습니다.
참조
[1]
웹사이트
v8.0.0
https://github.com/d[...]
2023-11-14
[2]
서적
Windows Forms Programming in C#
Addison-Wesley Professional
2003-09-06
[3]
웹사이트
Design and Implementation Guidelines for Web Clients by Microsoft Pattern and Practices
https://msdn.microso[...]
Microsoft
2003-11-00
[4]
서적
Moving from MFC, Windows Forms 2.0 Programming
Addison-Wesley Professional
2006-05-16
[5]
Visual Studio 2003 documentation
Introduction to Windows Forms
https://msdn.microso[...]
Microsoft 2003
[6]
웹사이트
Microsoft Open Sources WPF, WinForms, and WinUI
https://www.infoq.co[...]
2018-12-04
[7]
웹사이트
Announcing WPF, WinForms, and WinUI are going Open Source
https://www.hanselma[...]
2018-12-04
[8]
서적
C# 4.0 Unleashed
http://www.informit.[...]
Sams Publishing
2011-01-04
[9]
서적
NET Windows Forms in a Nutshell
O'Reilly Media
2003-03-00
[10]
서적
NET Windows Forms in a Nutshell
O'Reilly Media
2003-03-00
[11]
웹사이트
FAQ: Winforms
http://www.mono-proj[...]
mono-project.com
[12]
서적
Windows Forms 2.0 Programming
Addison-Wesley Professional
2006-05-16
[13]
서적
Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET
https://archive.org/[...]
Addison-Wesley Professional
2006-01-12
[14]
서적
Pro WPF and Silverlight MVVM: Effective Application Development with Model
Apress
2010-12-27
[15]
웹사이트
WPF vs. Windows Forms
https://joshsmithonw[...]
Josh Smith on WPF
2011-08-25
[16]
웹사이트
A WPF Q&A
http://www.infoq.com[...]
infoq.com
2014-04-21
[17]
웹사이트
High DPI Improvements for Windows Forms in .NET 4.5.2
http://www.infoq.com[...]
2015-02-10
[18]
웹사이트
WinForms
http://www.mono-proj[...]
mono-project.com
2011-07-30
[19]
웹사이트
WinForms
http://www.mono-proj[...]
mono-project.com
2011-07-30
[20]
웹사이트
GDC 2011
http://tirania.org/b[...]
2011-07-30
[21]
웹사이트
Introduction to Mono on macOS
https://www.mono-pro[...]
mono-project.com
2019-11-12
[22]
웹사이트
Windows.Forms Comes to 64-bit Mac OS X
https://www.infoq.co[...]
2019-11-12
[23]
문서
Windows フォーム | Microsoft Docs
https://docs.microso[...]
[24]
문서
Windowsフォーム開発に最適なコンポーネントセット - ComponentOne Studio for WinForms | グレープシティ コンポーネント製品
http://c1.grapecity.[...]
[25]
문서
Using a Windows Form User Control in MFC | Microsoft Docs
https://docs.microso[...]
[26]
문서
MFC での Windows フォーム ユーザー コントロールの使用 | Microsoft Docs
https://docs.microso[...]
[27]
문서
Microsoft Reference Source - .NET Framework
https://referencesou[...]
[28]
문서
End User License Agreement - MICROSOFT REFERENCE SOURCE LICENSE (MS-RSL)
https://referencesou[...]
[29]
문서
Microsoft Reference Source - .NET Framework (#System.Windows.Forms)
https://referencesou[...]
[30]
문서
マイクロソフト、.NET Frameworkライブラリのソースコード公開へ|CodeZine(コードジン)
https://codezine.jp/[...]
[31]
문서
winforms/LICENSE.TXT at main · dotnet/winforms · GitHub
https://github.com/d[...]
[32]
문서
winforms/src/Microsoft.VisualBasic.Forms/src/Microsoft/VisualBasic at main · dotnet/winforms · GitHub
https://github.com/d[...]
[33]
문서
winforms/src/System.Windows.Forms/tests/InteropTests/NativeTests at main · dotnet/winforms · GitHub
https://github.com/d[...]
[34]
문서
WinForms | Mono
http://www.mono-proj[...]
[35]
문서
@IT:特集 .NET Framework 2.0のWindowsフォーム新機能(前編)
https://atmarkit.itm[...]
[36]
블로그
アプリの高DPI(High DPI)対応について 第2回 ~ アプリケーションの高DPIへの対応レベル ~ – 田中達彦のブログ
https://blogs.msdn.m[...]
[37]
코드
Windows フォーム アプリの DPI Aware への変更 言語: XML
https://code.msdn.mi[...]
[38]
블로그
アプリの高DPI(High DPI)対応について 第1回 ~ 高DPIとは ~ – 田中達彦のブログ
https://blogs.msdn.m[...]
[39]
문서
What's new in the .NET Framework | Microsoft Docs
https://docs.microso[...]
[40]
문서
Visual Studio 2012、2013 で Visual C++ の Windows フォーム アプリケーション テンプレートが削除され、新規に作成できない
https://support.micr[...]
[41]
문서
WPF and Win32 Interoperation | Microsoft Docs
https://docs.microso[...]
[42]
문서
Walkthrough: Hosting a Windows Forms Control in WPF | Microsoft Docs
https://docs.microso[...]
[43]
문서
WPF と Win32 の相互運用性に関する概要 | Microsoft Docs
https://docs.microso[...]
[44]
문서
チュートリアル : Windows Presentation Foundation での Windows フォーム コントロールのホスト | Microsoft Docs
https://docs.microso[...]
[45]
문서
Windows Forms アプリを .NET Core 3.0 に移植する - .NET Core | Microsoft Docs
https://docs.microso[...]
[46]
뉴스
Windows Forms 5.0の新機能 - InfoQ
https://www.infoq.co[...]
[47]
문서
Windows フォーム .NET 5 の新機能 - Windows Forms .NET | Microsoft Learn
https://learn.micros[...]
[48]
블로그
Microsoft Build 2024で発表されたWindowsデスクトップ開発まわりの情報 | MESCIUS.devlog - メシウス株式会社
https://devlog.mesci[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com