기본 콤보박스의 보이는 데이터(Display Member)는 사용자의 이해를 돕기 위해 필요하고 쿼리문이나 기타 필요시 내부적으로 쓰일 데이터(Value Member)를 사용해야 할 때가 있습니다. 물론 저도 필요해서 찾다가 기록으로 남기면 좋을 듯하여 정리해봅니다.
예를 들어 화면상의 콤보박스를 선택했을 시 보이는 데이터는 '1'인데 쿼리문을 사용하거나 혹은 실제 내부적으로 필요한 데이터는 'one'일 경우 사용 가능합니다.
* 콤보박스의 일반적인 사용
// 초기화 및 데이터 추가
combobox.Items.Clear();
combobox.Items.Add("");
combobox.Items.Add("one");
// 데이터 가져올 때(설정도 가능)
string str = combobox.SelectedText
* 콤보박스 Display Member, Value Member 사용 1
// 바인딩 리스트를 사용하기 위해 선언합니다.
private BindingList<object> cmbList = new BindingList<object>();
// 데이터 추가
cmbList.Add(new { Display = "1", Value = "one" });
cmbList.Add(new { Display = "2", Value = "two" });
cmbList.Add(new { Display = "3", Value = "three" });
combobox.DataSource = cmbList;
combobox.DisplayMember = "Display";
combobox.ValueMember = "Value";
// 데이터 가져올 때
string str = combobox.SelectedValue.ToString();
* 콤보박스 Display Member, Value Member 사용 2
//구조체 KeyValuePair를 사용하기 위해 System.Collections.Generic를 선언합니다.
using System.Collections.Generic;
// 데이터 추가
combobox.DisplayMember = "Display"; //보이는 데이터, 텍스트 변경 가능
combobox.ValueMember = "Value"; //내부적으로 쓰일 데이터, 텍스트 변경 가능
Dictionary<string, string>dic = new Dictionary<string, string>();
dic.Add("1", "one");
dic.Add("2", "two");
combobox.DataSource = items;
// 데이터 가져올 때
string str = ((KeyValuePair<string, string="">)combobox.SelectedItem.ToString()).Value;
* 콤보박스 Display Member, Value Member 사용 3 (보류)
//dynamic 예약어 사용을 위해 참조에 Microsoft.CSharp 추가 (nuget으로도 가능)
// 초기화 및 데이터 추가
combobox.DisplayMember = "Display"; //보이는 데이터, 텍스트 변경 가능
combobox.ValueMember = "Value"; //내부적으로 쓰일 데이터, 텍스트 변경 가능
combobox.Items.Add(new { Display = "1", Value = "one" });
combobox.Items.Add(new { Display = "2", Value = "two" });
// 데이터 가져올 때
string str = (combobox.SelectedItem as dynamic).Value;
* 콤보박스 Display Member, Value Member 사용 4 (보류)
//dynamic 예약어 사용을 위해 참조에 Microsoft.CSharp 추가 (nuget으로도 가능)
// 데이터 추가
combobox.DisplayMember = "Display"; //보이는 데이터, 텍스트 변경 가능
combobox.ValueMember = "Value"; //내부적으로 쓰일 데이터, 텍스트 변경 가능
var items = new[] {
new { Display= "1", Value = "one" },
new { Display= "2", Value = "two" },
};
cboTest.DataSource = items;
// 데이터 가져올 때
string str = (combobox.SelectedItem as dynamic).Value;
이상입니다.
'컴퓨터 > c#' 카테고리의 다른 글
c# 실행 파일 인자 전달 방법 (Console) (0) | 2021.12.10 |
---|---|
c# 프로그램 난독화 (ConfuserEx, Obfuscar) (0) | 2021.08.10 |
C# MDI Form/ MDI Child Form 사용하기 (간단) (0) | 2021.06.11 |
C#으로 PDF 제어하기 3 (PDF에서 내용 찾기) (0) | 2021.05.21 |
C#으로 PDF 제어하기 2 (PDF Merge, PDF 병합, PDF 합치기) (0) | 2021.05.21 |