Microsoft의 .NET Framework 및 .NET Core에서 제공하는 GUI(Graphical User Interface) 프레임워크
새 프로젝트 -> Window Forms 앱(.NET Framework) 로 생성
📂 YourProject
┣ 📄 MainForm.cs // (사용자 코드 - 이벤트 핸들러, 비즈니스 로직)
┣ 📄 MainForm.Designer.cs // (디자인 코드 - UI 요소 자동 생성)
┣ 📄 MainForm.resx // (리소스 파일 - 문자열, 이미지, 아이콘 등 저장)
┗ 📄 Program.cs // (프로그램 시작점 - Main() 메서드)
사용자가 직접 작성하는 코드
이 파일에서는 버튼 클릭 이벤트, 데이터 처리, 비즈니스 로직 등을 작성
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent(); // 폼 디자인 초기화 (Designer.cs의 코드 실행)
}
private void btnAdd_Click(object sender, EventArgs e) //버튼 추가 시 발생하는 메서드
{
MessageBox.Show("버튼이 클릭되었습니다!");
}
}
Visual Studio 디자인 모드에서 UI 요소를 추가하면, 자동으로 관리되는 코드
이 파일은 "디자인 모드에서 추가한 컨트롤(Button, TextBox 등)"을 C# 코드로 변환해 저장하는 곳
약간 디자인을 글로 옮겨적은 느낌 -> 디자인 수정 시 알아서 변함
partial class MainForm
{
private System.Windows.Forms.Button btnAdd;
private void InitializeComponent()
{
this.btnAdd = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// btnAdd
//
this.btnAdd.Location = new System.Drawing.Point(50, 50);
this.btnAdd.Name = "btnAdd";
this.btnAdd.Size = new System.Drawing.Size(100, 30);
this.btnAdd.Text = "추가";
this.btnAdd.UseVisualStyleBackColor = true;
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
이미지, 문자열, 아이콘 같은 리소스 데이터를 저장하는 XML 기반 파일
이 파일은 Designer.cs에서 UI 요소의 텍스트, 이미지, 로컬라이제이션(다국어 지원) 등을 관리

도구 상자 -> 버튼을 드래그해서 버튼을 생성하고 Name,Text 설정
이후 버튼을 더블클릭(or F7) 하면 코드 부분으로 이동, 자동으로 버튼 클릭 메서드가 선언된다.
namespace WinFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// sender를 Button으로 캐스팅
Button clickedButton = sender as Button;
if (clickedButton != null) // null 체크 (안전한 캐스팅)
{
clickedButton.Location = new System.Drawing.Point(100, 100); // 버튼 위치 설정
clickedButton.Size = new System.Drawing.Size(300, 300); // 버튼 크기 설정
clickedButton.BackColor = System.Drawing.Color.LightGreen; // 버튼 색 설정
clickedButton.ForeColor = System.Drawing.Color.Red; // 버튼 내부 텍스트 색 설정
}
MessageBox.Show("Hello, WinForms!", "알림", MessageBoxButtons.OK, MessageBoxIcon.Information); //알림 창 출력
}
}
}
}


textbox 에 내용 입력 후 추가 누르면 listbox 에 추가, listbox 의 내용 클릭 후 삭제 누르면 삭제됨
namespace TodoListApp
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
// "추가" 버튼 클릭 이벤트
private void BtnAdd_Click(object sender, EventArgs e)
{
string task = txtTask.Text.Trim(); // 입력값 가져오기(빈칸 제거)
if (!string.IsNullOrEmpty(task)) // 빈 값 방지
{
listBoxTasks.Items.Add(task); // 리스트에 추가
txtTask.Clear(); // 입력창 초기화
txtTask.Focus(); // 입력창 다시 선택
}
else
{
MessageBox.Show("할 일을 입력하세요!", "알림", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
// "삭제" 버튼 클릭 이벤트
private void BtnRemove_Click(object sender, EventArgs e)
{
if (listBoxTasks.SelectedItem != null) // 선택된 항목이 있을 경우
{
listBoxTasks.Items.Remove(listBoxTasks.SelectedItem); // 선택된 항목 삭제
}
else
{
MessageBox.Show("삭제할 항목을 선택하세요!", "알림", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
}