달나라 노트

C# : CheckBox, CheckBox Event 본문

C#/C#

C# : CheckBox, CheckBox Event

CosmosProject 2022. 4. 1. 01:26
728x90
반응형

 

 

 

C#에 존재하는 여러 소스(Source) 중 CheckBox와 CheckBox에 적용할 수 있는 Event 처리를 봅시다.

 

 

먼저 아래 예시는 CheckBox를 생성하는 부분입니다.

 

using System;
using System.Windows.Forms;

class MyProgram
{
    public static void Main()
    {
        Form fm = new Form();
        fm.Text = "Sample Window";
        fm.Width = 300;
        fm.Height = 200;

        CheckBox chk = new CheckBox();
        chk.Text = "Test Check Box";
        chk.Width = fm.Width / 2;
        chk.Height = 20;
        chk.Checked = false;
        chk.Parent = fm;

        Application.Run(fm);
    }
}

 

위 코드를 실행하면 아래와 같은 창(Window)이 뜹니다.

 

체크박스가 생겼고 체크박스에 텍스트가 떠있죠.

클릭을 해보면 체크와 체크 해제 모두 가능합니다.

 

 

        CheckBox chk = new CheckBox();
        chk.Text = "Test Check Box";
        chk.Width = fm.Width / 2;
        chk.Height = 20;
        chk.Checked = false;
        chk.Parent = fm;

CheckBox 생성 부분은 위와 같습니다.

각 속성 별 의미를 알아봅시다.

 

- CheckBox chk = new CheckBox();

CheckBox 객체는 위처럼 CheckBox class를 이용해서 생성할 수 있습니다.

 

- chk.Text = "Test Check Box";

Text는 check box에 표시될 텍스트를 의미합니다.


- chk.Width = fm.Width / 2;

Width는 check box의 가로 길이를 의미합니다.


- chk.Height = 20;

Height는 check box의 세로 길이를 의미합니다.


- chk.Checked = false;

Checked 옵션은 체크박스의 체크 여부를 의미합니다.

true -> 체크 된 상태

false -> 체크 해제된 상태

Checked = false로 생성하면 가장 처음 form을 실행할 때 check box의 기본값을 체크 해제된 상태로 설정한다는 의미입니다.


- chk.Parent = fm;

check box의 표시를 위해 check box의 부모 객체를 form 객체인 fm으로 설정해줍니다.

 

 

 

 

 

 

 


 

 

 

 

 

 

이제 check box에 이벤트를 적용시켜봅시다.

 

제가 만들 이벤트는 다음과 같습니다.

체크박스에 체크가 되었을 때 --> 체크박스 텍스트를 Checked로 나타낸다.

체크박스에 체크가 해제되었을 때 --> 체크박스 텍스트를 Unchecked로 나타낸다.

 

 

이러한 내용을 담은 코드가 아래와 같습니다.

아래 코드를 실행시켜봅시다.

 

using System;
using System.Windows.Forms;

class MyProgram
{
    public static void Main()
    {
        Form fm = new Form();
        fm.Text = "Sample Window";
        fm.Width = 300;
        fm.Height = 200;

        CheckBox chk = new CheckBox();
        chk.Text = "Test Check Box";
        chk.Width = fm.Width / 2;
        chk.Height = 20;
        chk.Checked = false;
        chk.Parent = fm;

        void chk_check_changed(object sender, EventArgs e)
        {
            if (chk.Checked == true)
            {
                chk.Text = "Checked";
            }
            else if (chk.Checked == false)
            {
                chk.Text = "Unchecked";
            }
            else
            {
                chk.Text = "None";
            }
        }
        chk.Click += new EventHandler(chk_check_changed);

        Application.Run(fm);
    }
}

 

 

위 코드를 실행하면 아래와 같은 창(Window)이 뜹니다.

 

그리고 체크박스를 체크해보면 아래와 같이 체크박스의 텍스트가 Checked로 바뀝니다.

 

체크를 해제하면 아래와 같이 체크박스의 텍스트가 Unchecked로 바뀝니다.

 

이렇게 check box의 check 여부에 따라 원하는 이벤트를 실행시킬 수 있습니다.

 

 

 

다른 부분은 모두 똑같으니 check box에 적용할 Event 처리 부분을 봅시다.

 

이벤트의 처리는 아래 2가지의 흐름으로 진행됩니다.

1. Event가 발생했을 때 어떤 동작을 할지를 정해둔 method 생성

2. 생성한 method를 EventHandler에 등록

 

 

 

1. Event가 발생했을 때 어떤 동작을 할지를 정해둔 method 생성

먼저 chk_check_changed라는 method를 생성합니다. (method 이름은 원하는 것으로 변경해도 됩니다.

chk_check_changed method는 Event가 발생할 때 어떤 동작을 할지에 대한 정보를 담고 있는 method입니다.

 

        void chk_check_changed(object sender, EventArgs e)
        {
            if (chk.Checked == true)
            {
                chk.Text = "Checked";
            }
            else if (chk.Checked == false)
            {
                chk.Text = "Unchecked";
            }
            else
            {
                chk.Text = "None";
            }
        }

먼저 checkbox Event에 적용할 method도 인자로서 object sender, EventArgs e 두 개의 인자를 받습니다.

이 인자들은 EventHandler에 등록할 method라면 가지고 있어야 하는 인자들입니다.

 

check box를 생성할 때 Checked 옵션은 체크박스가 체크되어있는지 아니면 해제되어있는지에 대한 옵션이라고 설명했었습니다.

 

따라서 chk_check_changed method 에서는 if ~ else if 구문을 이용해서 현재의 Checked 상태가 true인지 false인지를 확인한 후 체크가 된(Checked == true) 경우에는 체크박스 텍스트(Text)를 Checked로 바꾸고 체크가 해제(Checked == false)된 경우 체크박스 텍스트(Text)를 Unchecked로 바꾸는 기능을 작성한겁니다.

 

else 부분은 혹시나 Checked의 감지가 어떠한 오류로 제대로 되지 않을 때 프로그램 자체가 Error를 발생시키는 것을 방지하기 위해 적어둔 부분이니 크게 신경쓰지 않으셔도 됩니다.

 

 

 

2. 생성한 method를 EventHandler에 등록

        chk.Click += new EventHandler(chk_check_changed);

체크박스를 체크하거나 해제하는 경우는 체크박스를 마우스로 클릭하는 경우입니다.

따라서 chk_check_changed method를 체크박스 객체의 클릭(chk.Click) 이벤트에 등록해줘야합니다.

 

따라서 chk.Click 이벤트에 chk_check_changed method를 EventHandler에 담아 등록합니다.

 

 

 

 

 

 

728x90
반응형
Comments