본문 바로가기
Study/C#

C# Windows Forms 강의 3편: 기본 컨트롤 2 - CheckBox와 RadioButton 활용하기

by wawManager 2025. 2. 6.
728x90

1. 강의 개요

이번 강의에서는 Windows Forms의 기본 컨트롤 중 하나인 CheckBoxRadioButton을 활용하여 사용자 선택 옵션을 처리하는 방법을 배웁니다.
CheckBox는 다중 선택, RadioButton은 그룹 내 단일 선택을 처리할 수 있어 설문조사나 설정 화면 등에 유용하게 사용됩니다.


2. 학습 목표

  1. CheckBox와 RadioButton의 기본 동작과 속성 이해.
  2. 그룹화(GroupBox)를 사용해 RadioButton을 묶어 단일 선택 처리.
  3. 다중 선택과 단일 선택 옵션을 활용한 간단한 프로그램 설계.

3. 컨트롤 개요

CheckBox (체크박스)

  • 다중 선택이 가능하며, 주로 설정 옵션에 사용.
  • 상태: Checked(선택됨) 또는 Unchecked(선택되지 않음).

RadioButton (라디오버튼)

  • 그룹 내에서 단일 선택을 처리.
  • 상태: Checked(선택됨).
  • 단독으로 사용하거나 GroupBox 내에 묶어서 활용.

GroupBox (그룹박스)

  • 여러 컨트롤을 그룹화하여 UI를 정리하거나 RadioButton의 그룹화를 처리.

4. 프로젝트 준비

1) 프로젝트 생성

  1. Visual Studio에서 Windows Forms App (.NET) 프로젝트 생성.
  2. 프로젝트 이름: CheckBoxAndRadioButtonApp

2) 폼 설계

  • CheckBox로 다중 선택 옵션.
  • GroupBox + RadioButton으로 단일 선택 옵션.
  • 결과를 표시할 Label 추가.

5. 실습: 다중 선택 및 단일 선택 옵션 구현

1) 디자이너에서 컨트롤 추가

컨트롤 타입 이름 텍스트 위치(x, y) 크기(Width x Height)

Label lblQuestion "좋아하는 음식을 선택하세요:" (20, 20) (300 x 30)
CheckBox chkPizza "피자" (40, 60) (100 x 30)
CheckBox chkBurger "햄버거" (40, 90) (100 x 30)
CheckBox chkSushi "스시" (40, 120) (100 x 30)
GroupBox grpDrinks "음료를 선택하세요:" (20, 160) (300 x 120)
RadioButton rdoCola "콜라" (40, 190) (100 x 30)
RadioButton rdoJuice "주스" (40, 220) (100 x 30)
RadioButton rdoWater "물" (40, 250) (100 x 30)
Button btnSubmit "결과 확인" (20, 300) (100 x 30)
Label lblResult "" (빈 텍스트) (20, 340) (400 x 30)

2) 클릭 이벤트 작성

  1. 디자이너에서 btnSubmit을 더블 클릭하여 클릭 이벤트 핸들러 생성.
private void btnSubmit_Click(object sender, EventArgs e)
{
    // CheckBox 선택된 항목 확인
    List<string> foods = new List<string>();
    if (chkPizza.Checked) foods.Add("피자");
    if (chkBurger.Checked) foods.Add("햄버거");
    if (chkSushi.Checked) foods.Add("스시");

    // RadioButton 선택된 항목 확인
    string drink = "";
    if (rdoCola.Checked) drink = "콜라";
    else if (rdoJuice.Checked) drink = "주스";
    else if (rdoWater.Checked) drink = "물";

    // 결과 출력
    if (foods.Count == 0 && string.IsNullOrEmpty(drink))
    {
        lblResult.Text = "음식과 음료를 선택하세요.";
    }
    else
    {
        string foodResult = foods.Count > 0 ? string.Join(", ", foods) : "선택 안 함";
        string result = $"선택한 음식: {foodResult}, 선택한 음료: {drink}";
        lblResult.Text = result;
    }
}

3) 실행 결과

  1. 피자와 햄버거를 선택하고, 음료로 "콜라"를 선택 후 버튼 클릭:
    • 출력: 선택한 음식: 피자, 햄버거, 선택한 음료: 콜라
  2. 아무것도 선택하지 않은 경우:
    • 출력: 음식과 음료를 선택하세요.


6. 각 컨트롤의 주요 속성 및 사용 방법

1) CheckBox의 주요 속성

속성 설명 예제

Checked 선택 여부를 나타냄 (true/false) chkPizza.Checked = true;
Text CheckBox 옆에 표시할 텍스트 chkPizza.Text = "피자";
Enabled 활성화 여부 chkPizza.Enabled = false;

2) RadioButton의 주요 속성

속성 설명 예제

Checked 선택 여부를 나타냄 (true/false) rdoCola.Checked = true;
Text RadioButton 옆에 표시할 텍스트 rdoCola.Text = "콜라";
Enabled 활성화 여부 rdoCola.Enabled = false;

3) GroupBox의 주요 속성

속성 설명 예제

Text GroupBox의 제목 grpDrinks.Text = "음료 선택";
Enabled GroupBox 내부 컨트롤 활성화/비활성화 grpDrinks.Enabled = false;

7. 추가 실습: 다중 그룹 RadioButton 처리

  1. 두 번째 GroupBox 추가:
    • 제목: "선호하는 시간대"
    • RadioButton 3개: "아침", "점심", "저녁"
  2. 모든 선택 항목을 버튼 클릭 시 결과에 포함되도록 처리.
private void btnSubmit_Click(object sender, EventArgs e)
{
    // 음식 선택
    List<string> foods = new List<string>();
    if (chkPizza.Checked) foods.Add("피자");
    if (chkBurger.Checked) foods.Add("햄버거");
    if (chkSushi.Checked) foods.Add("스시");

    // 음료 선택
    string drink = "";
    if (rdoCola.Checked) drink = "콜라";
    else if (rdoJuice.Checked) drink = "주스";
    else if (rdoWater.Checked) drink = "물";

    // 시간대 선택
    string time = "";
    if (rdoMorning.Checked) time = "아침";
    else if (rdoLunch.Checked) time = "점심";
    else if (rdoDinner.Checked) time = "저녁";

    // 결과 출력
    string foodResult = foods.Count > 0 ? string.Join(", ", foods) : "선택 안 함";
    string result = $"선택한 음식: {foodResult}, 음료: {drink}, 시간대: {time}";
    lblResult.Text = result;
}


 

728x90