RadioButton 사용하기 [WinForm with C#]

안녕하세요. 언제나 휴일에 언휴예요.

이번 강의는 RadioButton 사용하는 실습입니다.

RadioButton은 CheckBox와 대부분 비슷합니다.

차이가 있는 부분은 같은 부모에 있는 RadioButton 중에 하나만 체크할 수 있다는 것이죠.

1. 컨트롤 배치
2. 이벤트 핸들러 등록 및 소스 코드 작성
3. Form1.cs 소스 코드

1. 컨트롤 배치

컨트롤 배치
그림 1. 컨트롤 배치

성별, 혈액형, 내/외국인을 체크할 수 있는 RadioButton을 배치하고 Name 속성을 지정하세요.

제출 Button과 상태 정보를 보여줄 Label도 지정하세요.

주의할 점은 같은 부모에 있는 RadioButton 중에 하나만 체크할 수 있다는 거예요.

성별과 내/외국인을 체크할 수 있는 RadioButton의 부모가 다를 수 있게 배치 컨트롤을 이용합니다.

여기에서는 Panel이 적합하네요.

컨트롤 배치
그림2. 컨트롤 배치2

그리고 초기에 체크 상태로 설정할 RadioButton의 Checked 속성은 True로 지정하세요.

2. 이벤트 핸들러 등록 및 소스 코드 구현

버튼 클릭 이벤트 핸들러를 등록하세요.

버튼 클릭 이벤트 핸들러에서는 성별, 혈액형, 내/외국인 정보를 얻어와서 lb_state의 Text 속성을 설정합니다.

각 정보를 얻어오는 부분은 별도의 메서드로 작성합시다.

        private void btn_submit_Click(object sender, EventArgs e)
        {
            string ginfo = GetGenderInfo();
            string binfo = GetBloodInfo();
            string linfo = GetLocalInfo();
            lb_state.Text = string.Format("성별:{0} 혈액형:{1}, {2}",ginfo, binfo,linfo);
        }

성별 정보를 얻어오는 메서드를 구현합시다.

두 개의 버튼 중에 하나의 Checked 상태 값을 확인하여 정보를 반환하면 되겠죠.

        private string GetGenderInfo()
        {
            if(rbtn_male.Checked)
            {
                return rbtn_male.Text;
            }
            return rbtn_female.Text;
        }

나머지 두 개의 메서드도 같은 방법으로 구현합니다.

        private string GetLocalInfo()
        {
            if(rbtn_local.Checked)
            {
                return rbtn_local.Text;
            }
            return rbtn_foreign.Text;
        }

        private string GetBloodInfo()
        {
            if(rbtn_a.Checked)
            {
                return rbtn_a.Text;
            }
            if(rbtn_b.Checked)
            {
                return rbtn_b.Text;
            }
            if(rbtn_ab.Checked)
            {
                return rbtn_ab.Text;
            }
            return rbtn_o.Text;
        }

3. Form1.cs 소스 코드

다음은 Form1.cs 소스 파일의 코드입니다.

using System;
using System.Windows.Forms;

namespace RadioButton_사용하기
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btn_submit_Click(object sender, EventArgs e)
        {
            string ginfo = GetGenderInfo();
            string binfo = GetBloodInfo();
            string linfo = GetLocalInfo();
            lb_state.Text = string.Format("성별:{0} 혈액형:{1}, {2}",ginfo, binfo,linfo);
        }

        private string GetLocalInfo()
        {
            if(rbtn_local.Checked)
            {
                return rbtn_local.Text;
            }
            return rbtn_foreign.Text;
        }

        private string GetBloodInfo()
        {
            if(rbtn_a.Checked)
            {
                return rbtn_a.Text;
            }
            if(rbtn_b.Checked)
            {
                return rbtn_b.Text;
            }
            if(rbtn_ab.Checked)
            {
                return rbtn_ab.Text;
            }
            return rbtn_o.Text;
        }

        private string GetGenderInfo()
        {
            if(rbtn_male.Checked)
            {
                return rbtn_male.Text;
            }
            return rbtn_female.Text;
        }
    }
}