C# Windows Forms 개발 실전 튜토리얼: 데스크톱 앱 만들기
C# Windows Forms 개발 실전 튜토리얼
콘솔 애플리케이션을 마스터한 후 다음 논리적 단계는 Visual Studio의 Windows Forms을 사용하여 풍부한 데스크톱 경험을 만드는 것입니다. 이 가이드는 프로젝트 설정부터 컨트롤 추가, 이벤트 연결, TreeView와 PictureBox 같은 고급 구성 요소 통합까지 모든 단계를 안내합니다.
Windows Forms 기초
Windows Forms 애플리케이션은 데스크톱 머신에서 네이티브로 실행됩니다. 시각적 레이아웃과 사용자가 상호작용하는 컨트롤 집합(레이블, 텍스트 상자, 리스트 상자 등)으로 구성됩니다.
아래는 C#으로 만든 간단한 로그인 폼입니다:

예시의 주요 요소:
- 인접한 텍스트 상자를 설명하는 레이블 컨트롤
- 사용자명과 비밀번호 입력을 위한 텍스트 상자
- 인증 로직을 트리거하는 버튼
C# Hello World (Windows Forms)
Visual Studio 워크플로를 이해하기 위해 기본 "Hello World" Windows Form을 만들어 보겠습니다.
- Visual Studio를 열고 파일 > 새로 만들기 > 프로젝트 선택.

- Windows 카테고리에서 Windows Forms App (.NET Framework) 선택. 프로젝트 이름을
DemoApplication으로 지정하고 확인 클릭.
- 솔루션 탐색기에 두 파일 표시:
Form1.cs – 시각적 폼
Program.cs – 애플리케이션 진입점
- 도구 상자에서 Label을 드래그하여 폼에 놓고
Text 속성을 Hello World로 설정.
- 애플리케이션 실행 – 폼에 "Hello World" 표시.

폼에 컨트롤 추가하기
이름, 주소, 도시, 성별, 코스 선호도를 입력받는 사용자 정보 폼을 조립하는 단계별 가이드입니다.
GroupBox – 논리적 섹션 구분
GroupBox를 폼에 드래그하고 Text 속성을 User Details로 변경.

Label
GroupBox 안에 "Name", "Address" 두 레이블 배치.

TextBox
두 텍스트 상자 추가, 이름 txtName, txtAddress로 지정.

ListBox – 도시 선택
ListBox 삽입, 이름 lstCity로 지정하고 "Mumbai", "Bangalore", "Hyderabad" 추가.

RadioButton – 성별
두 RadioButton 컨트롤 배치: rdMale(Text: Male), rdFemale(Text: Female).

CheckBox – 코스 선호도
두 CheckBox 컨트롤 추가: chkC(Text: C#), chkASP(Text: ASP.NET).

Button – 제출
Button 드롭, 이름 btnSubmit, Text를 "Submit"으로 설정.

컨트롤 이벤트 처리
이벤트는 사용자 행동에 반응하여 발생합니다. 두 가지 일반적인 시나리오입니다.
ListBox 선택 변경
lstCity 컨트롤을 더블클릭하여 이벤트 핸들러 생성. 다음 코드 추가:
private void lstCity_SelectedIndexChanged(object sender, EventArgs e) {
var selected = lstCity.SelectedItem?.ToString();
if (!string.IsNullOrEmpty(selected))
MessageBox.Show($"You selected: {selected}");
}
앱 실행 시 도시 선택마다 메시지 박스 표시.
Button 클릭 – 제출
btnSubmit 더블클릭하여 핸들러 생성 후 삽입:
private void btnSubmit_Click(object sender, EventArgs e) {
var name = txtName.Text;
var address = txtAddress.Text;
MessageBox.Show($"Name: {name}\nAddress: {address}");
}
"Submit" 클릭 시 입력된 세부사항 표시.
TreeView와 PictureBox 컨트롤
TreeView – 계층적 데이터
TreeView를 폼에 드래그. Nodes 속성으로 "Root" 루트 노드 추가 후 자식 노드 "Label", "Button", "CheckBox" 추가.

PictureBox – 이미지 표시
PictureBox 삽입, SizeMode를 Zoom으로 설정, Image 속성으로 이미지 할당.

요약
- Windows Forms은 사용자 머신에서 직접 실행되는 데스크톱 애플리케이션 구축 가능
- 레이블, 텍스트 상자, 리스트 상자, 라디오 버튼, 체크박스 등 컨트롤을 도구 상자에서 추가
TreeView, PictureBox 같은 고급 구성 요소로 UI 기능 확장
- 이벤트 핸들러가 사용자 상호작용에 반응, 버튼 클릭과 리스트 선택이 가장 일반적