IT프로그래밍

C# 체크박스 체크여부 확인 하기(소스 코드 & 프로젝트 첨부)

Manniz 2020. 4. 19.

CheckBox란?

From의 Control중 하나로, [선택함(Checked == true) / 선택하지 않음(Checked == false)] 두 가지의 결과가 나올 수 있는 컨트롤입니다.

 

해당 컨트롤을 통해 사용자에게 예/아니오 중 하나를 선택하게 하는 것이 가능합니다.

※ radioButton과 헷갈리실 수 있으나, radioButton은 checkBox에서 파생되어 나온것이며

radioButton은 그룹으로 묶여있는 것중 하나를 선택했을 경우, 같은 그룹의 다른 모든 라디오 버튼들이 선택해제되는 특징이 있습니다.

라디오버튼에 대한 포스팅은 추후 업로드 예정입니다.

 

체크박스를 체크하지 않은 상태

 

체크박스를 체크한 상태

 

 

위에서 언급한 것 처럼 체크박스는 딱 2가지의 상태를 갖고 있습니다.

1. Check 되어 있음

2. Check 되어 있지 않음

즉, 체크박스의 체크여부만 안다면 그에 맞는 동작을 수행하도록 하면됩니다.

 

체크박스의 체크여부를 알기위해서는 우선 해당 체크박스의 값이 바뀌었을 때

그 값을 확인해주는 방법이 있습니다.

바로 예제를 통해 확인해 보도록 하겠습니다.

 


예제. checkBox의 CheckedChanged 이벤트가 호출될 때 checkBox의 Checked 속성 확인하기

 - 체크 박스가 체크되어 있을 때 텍스트 박스에 "체크 되어있음" 체크되어 있지 않을 때 "체크되어 있지 않음" 표출

 - 체크 박스가 체크되어 있을 때 버튼 활성화, 체크되어 있지 않을 때 버튼 비활성화

 

폼디자인(Form Design)

 

1. 체크 여부에 따라서 수행될 동작을 정의하는 함수 isChecked를 만듭니다.

소스코드

public void isChecked(bool Checked)
{
    if (Checked)
    {
        button1.Enabled = true;
        textBox1.Text = "체크 되어있음";
    }
    else
    {
        button1.Enabled = false;
        textBox1.Text = "체크되어 있지 않음";
    }
}

Checked에 true가 들어왔을 때 Button을 활성화 시키고 텍스트 박스에 "체크되어 있음"이라는 문자열을 표출

Checked에 false가 들어왔을 때 Button을 비활성 시키고 텍스트 박스에 "체크되어 있지 않음"이라는 문자열을 표출

하는 코드 입니다.

 

 

2. checkBox1의 이벤트 탭에서 CheckedChanged 이벤트를 생성합니다.

위 이벤트는 해당 체크박스의 상태가 변할 때 마다 호출됩니다.

그안에 다음과 같은 코드를 적어줍니다.

 

소스 코드

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    isChecked(checkBox1.Checked);
}

 

이 코드에서 가장 핵심은 checkBox1.Checked입니다.

이 속성이 바로 체크박스 체크여부를 가져오는 값입니다.

check가 되어 있다면 true를 return해주고

check가 되어 있지 않다면 false를 return해줍니다.

 

즉 CheckBox의 체크여부가 변할 때 마다 isChecked(true) or isChecked(false)를 호출하여

Textbox와 button 컨트롤에 변화를 주는 것입니다.

 

3. Form1() 생성자에 isCheisChecked(checkBox1.Checked)을 추가합니다.

 - 이 작업을 해주지 않으면 처음 Form이 Load된 후에 체크박스는 체크되어 있지 않은 상태임에도,

버튼은 활성화 되어 있고, 텍스트박스에는 아무런 문자열도 출력되지 않을 것입니다.

왜냐하면 우리는 체크박스가 눌렸을 경우에만 그 상태값에 따라 다른 컨트롤을 변화시키기 때문이죠.

 

하지만 저는 처음 상태(CheckBox의 Checked Defaul값은 false입니다)부터 타 컨트롤에 영향을 주고 싶습니다.

그렇기 때문에 InitializeComponent(); 밑에 해당 코드를 추가해줘서 폼이 로드된 후 체크박스의 상태를 체크하여 컨트롤을 변경시키는 작업을 진행하였습니다.

 

소스 코드

public Form1()
{
    InitializeComponent();
    isChecked(checkBox1.Checked);
}

 

실행 결과

프로그램 구동 바로 후

 

CheckBox를 Check했을 경우

 

CheckBox의 Check를 해제

 

체크박스의 체크여부에 따라 텍스트박스와 버튼의 활성화가 바뀌는 것을 확인 하실 수 있습니다.

 

전체 소스 코드 : 타 프로젝트위에 덮어 사용하여 프로젝트명이 일치하지 않는점 양해부탁드립니다 >_+

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Console_Example
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            isChecked(checkBox1.Checked);
        }

        public void isChecked(bool Checked)
        {
            if (Checked)
            {
                button1.Enabled = true;
                textBox1.Text = "체크 되어있음";
            }
            else
            {
                button1.Enabled = false;
                textBox1.Text = "체크되어 있지 않음";
            }
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            isChecked(checkBox1.Checked);
        }
        


    }
}

 

대문짤

 

이상입니다. 예제에 사용한 프로젝트 파일 통으로 압축하여 업로드 합니다.

질문은 댓글로 부탁드립니다.

 

CheckBox_Example_01.zip
0.05MB

댓글