[WinForm] ComboBox, RadioButton, NumericUpDown

[WinForm] ComboBox, RadioButton, NumericUpDown

이번 글에서는 WinForm의 ComboBox, RadioButton, NumericUpDown에 대해 알아보겠습니다.
우선 WinForm 프로젝트를 하나 생성하신 뒤 폼 디자인에 아래와 같이 만들어 주세요

그 다음 Form을 더블 클릭 하여 Load 이벤트 처리 함수를 만들어줍니다.

namespace WinFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
}

ComboBox

콤보 박스는 드롭다운 형태의 목록을 제공하는 컨트롤입니다. 텍스트를 입력할 수도 있지만 보통 일반적으로는 여러 항목 중에 선택을 할 때 사용하는 컨트롤입니다. 콤보박스 속성에 아래와 같이 입력합니다.

속성입력 값
(Name)cbFruit
DrowDownStyleDropDownList

콤보 박스를 클릭 했을 때 표시되는 항목을 추가하기 위해 아래와 같이 Load 이벤트 함수에 추가해줍니다.

private void Form1_Load(object sender, EventArgs e)
{
    cbFruit.Items.Add("사과");
    cbFruit.Items.Add("배");
    cbFruit.Items.Add("딸기");
    cbFruit.Items.Add("수박");
    cbFruit.Items.Add("귤");
    cbFruit.Items.Add("포도");
}

Add 함수를 통해 항목을 한개씩 추가할 수 있지만 아래와 같이 AddRange 함수를 통해 여러 개를 한번에 입력할 수 있습니다.

private void Form1_Load(object sender, EventArgs e)
{
    //cbFruit.Items.Add("사과");
    //cbFruit.Items.Add("배");
    //cbFruit.Items.Add("딸기");
    //cbFruit.Items.Add("수박");
    //cbFruit.Items.Add("귤");
    //cbFruit.Items.Add("포도");

    string[] fruits = { "사과", "배", "딸기", "수박", "귤", "포도" };
    cbFruit.Items.AddRange(fruits);
}

SelectedIndex에는 선택된 Index의 값이 들어 있습니다. 여기에 0을 대입하여 첫번째 항목을 선택하게 합니다.
또한 Count에는 입력된 항목의 개수가 저장되어 있습니다.

private void Form1_Load(object sender, EventArgs e)
{
    // add 1
    //cbFruit.Items.Add("사과");
    //cbFruit.Items.Add("배");
    //cbFruit.Items.Add("딸기");
    //cbFruit.Items.Add("수박");
    //cbFruit.Items.Add("귤");
    //cbFruit.Items.Add("포도");

    // add 2
    string[] fruits = { "사과", "배", "딸기", "수박", "귤", "포도" };
    cbFruit.Items.AddRange(fruits);

    cbFruit.SelectedIndex = 0; // 첫번째 항목 선택
    int iCount = cbFruit.Items.Count; // 개수 얻기
}

그 다음으로 SelectedIndexChanged 이벤트 함수를 추가하여 아래와 같이 코딩해줍니다.

private void cbFruit_SelectedIndexChanged(object sender, EventArgs e)
{
    lbComboBox.Text = "index: " + cbFruit.SelectedIndex + ", text: " + cbFruit.Text;
}

실행 하면 아래와 같이 동작합니다.


RadioButton

라디오 버튼은 여러 개의 항목 중에 하나를 선택한다는 점에서 콤보 박스와 비슷한 기능을 가지지만 UI 상으로는 전혀 다릅니다.
생긴 것은 체크 박스와 비슷하지만 하나만 선택할 수 있고, 보통 그룹 박스에 묶여서 사용됩니다.

라디오 버튼에는 아래와 같이 속성을 설정해줍니다.

속성입력 값
(Name)rdSelect1, rdselect2, rdselect3, rdselect4
AutoSizeTRUE

프로그램 실행 시 ‘선택1’ 라디오 박스를 체크되게 하려면 Load 이벤트 함수에 아래와 같이 추가해줍니다.

private void Form1_Load(object sender, EventArgs e)
{
    rdSelect1.Checked = true; // 라디오 선택하기
}

디자인 화면에서 모든 라디오 버튼을 선택해주시고(Ctrl 키 누른 상태로 마우스 좌클릭하면 여러개 선택 가능합니다.)

그 다음 CheckedChanged 이벤트 함수를 생성해줍니다.

CheckedChanged 이벤트 함수에 아래와 같이 입력해줍니다.

private void rdSelect_CheckedChanged(object sender, EventArgs e)
{
    RadioButton rdSelect = (RadioButton)sender;
    lbRadio.Text = "select radio text: " + rdSelect.Text;
}

실행 하면 아래와 같이 작동합니다.


NumericUpDown

NumericUpDown 숫자를 입력하거나 증가/감소 버튼을 가져 숫자 값을 입력하는데 사용되는 컨트롤로 사용자가 쉽게 숫자를 증가 또는 감소시킬 수 있는 방식으로 되어있습니다.

NumericUpDown에서 주요 사용되는 속성은 아래와 같습니다.

속성설명
Minimum최소값
Maximum최대값
Increment증/감버튼 클릭 시, 상/하 방향키 클릭 시, 또는 마우스 휠 변경 되는 delta 값
DecimalPlaces소수점 이하 몇 자리 까지 표시할지
Value값 설정

우선 Load 이벤트 함수에 아래와 같이 초기화해줍니다.

private void Form1_Load(object sender, EventArgs e)
{
    numYear.Minimum = 1900; // 최소값
    numYear.Maximum = 2199; // 최대값
    numYear.Increment = 5; // 증/감버튼 클릭 시, 상/하 방향키 클릭 시, 또는 마우스 휠 변경 되는 delta 값
    //numYear.DecimalPlaces = 2; // 소수점 이하 몇 자리 까지 표시할지
    numYear.Value = 1900; // 값 설정

    numMonth.Minimum = 1;
    numMonth.Maximum = 12;
    numMonth.Value = 1;

    numDay.Minimum = 1;
    numDay.Maximum = 31;
    numDay.Value = 1;
}

그리고 디자인 화면에서 NumericUpDown 컨트롤을 모두 선택한 다음에 ValueChanged 이벤트 함수를 만들어 줍니다.

그 다음 ValueChanged 이벤트 함수에 아래와 같이 코딩합니다.

private void numYearMonthDay_ValueChanged(object sender, EventArgs e)
{
    string txt = string.Format($"{numYear.Value}-{numMonth.Value}-{numDay.Value}");
    lbNumeric.Text = txt;
}

실행 하면 아래와 같이 작동합니다.


github: https://github.com/3001ssw/c_sharp/tree/main/WinForm/ComboBox_RadioButton_NumericUpDown/WinFormsApp1