반응형
//사용자가 선택한 ComboBox의 Index값을 이용해서 Value 값을 가져온다.
var prop = cboTime.Items[cboTime.SelectedIndex].GetType().GetProperty(cboTime.ValueMember);
Time = prop.GetValue(cboTime.Items[cboTime.SelectedIndex], null).ToString();
C#을 이용해서 WinForm 개발을 하다 보면 ComboBox 컨트롤 사용을 자주 하게 된다.
매번 ComboBox를 사용하면서 특정 값 또는 텍스트로 ComboBox의 목록 중 1개를 선택하고자 할 경우가 많다.
다양한 방법이 있겠지만, 간단하게 구현해서 사용할 수 있는 방법을 소개하고자 한다.
ComboBox를 이용해서 선택할 수 있는 시간을 콤보박스에 보여주기 위해 Items에 추가하는 로직과 특정 시간대의 값에 따라 콤보박스가 선택되어져 있도록 하기 위한 코드를 남겨둔다.
아래는 ComboBox에 간단하게 DisplayMember와 ValueMember로 구분해서 Items에 추가하는 방법.
cboTime.DisplayMember = "Text";
cboTime.ValueMember = "Value";
cboTime.Items.Add(new { Text = "09:00", Value = "0900" });
cboTime.Items.Add(new { Text = "09:30", Value = "0930" });
cboTime.Items.Add(new { Text = "10:00", Value = "1000" });
cboTime.Items.Add(new { Text = "13:30", Value = "1330" });
cboTime.Items.Add(new { Text = "14:00", Value = "1400" });
cboTime.Items.Add(new { Text = "14:30", Value = "1430" });
아래는 사용자가 입력한 값에 따라 ComboBox가 선택되어져 있도록 하는 방법
string Time = "1000";
//Time 값이 비어 있을 경우에는 첫번째 항목이 선택되도록 처리
if (string.IsNullOrEmpty(Time) || string.IsNullOrWhiteSpace(Time)) cboTime.SelectedIndex = 0;
else
{
//ComboBox 항목 수 만큼 돌면서 Time 변수와 같은 값을 가진 항목을 검색
for(int i = 0; i < cboTime.Items.Count; i++)
{
var prop = cboTime.Items[i].GetType().GetProperty(cboTime.ValueMember);
if (prop != null && prop.GetValue(cboTime.Items[i], null).ToString() == Time)
{
cboTime.SelectedIndex = i;
break;
}
}
}
사용자가 ComboBox에서 특정 값을 선택했을 경우 가져오는 방법
//사용자가 선택한 ComboBox의 Index값을 이용해서 value을 가져온다.
var prop = cboTime.Items[cboTime.SelectedIndex].GetType().GetProperty(cboTime.ValueMember);
Time = prop.GetValue(cboTime.Items[cboTime.SelectedIndex], null).ToString();
반응형
'C# 개발 > C#' 카테고리의 다른 글
ClickOnce 배포 앱 삭제 및 설치 실행 파일 만들기 (0) | 2023.05.11 |
---|---|
특정 일자를 넣으면 요일을 반환하는 함수 (0) | 2023.01.04 |
마우스 Point가 선 위에 존재하는지 체크 (0) | 2021.06.29 |
User Control 에서 풍선도움말 보여주기 (0) | 2020.02.17 |
WinForm에서 Partial Class를 이용해서 UI와 로직을 분리하기 (0) | 2019.08.22 |