이번 글에서는 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 |
DrowDownStyle | DropDownList |
콤보 박스를 클릭 했을 때 표시되는 항목을 추가하기 위해 아래와 같이 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 |
AutoSize | TRUE |
프로그램 실행 시 ‘선택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