즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

개발/C# + DevExpress

[2021.04] Devexpress ComboBoxEdit 아이템에 Class Object 넣어서 처리하기

다물칸 2021. 4. 21. 18:59
728x90
반응형

오늘도 제목 뽑기가 힘드네요. 카테고리를 나눠야 할까요? 

각설하고 오늘은 심플합니다. 

 

Devexpress에서 CustomDiplayText, Popup이라는 이벤트를 만들어서 가지고 있는 아이템을 수정해서 보여주는 이벤트는 알고 있을 겁니다만, 오늘은 이거 전혀 사용하지 않습니다. 

 

CustomDisplayText는 선택된 아이템을 콤보박스내에 표시하는 용도이고, 

Popup은 Popup버튼을 눌러서 나오는 Listbox의 내용을 바꿔줄 때 사용하는데 아래 방법을 이용하면 심플하게 

콤보박스 내에 단일 정보가 아닌 다중정보를 담는 클래스 오브젝트를 넣어서 사용할 수 있습니다. 

 

자 클래스를 설계해보죠. 

 

// 클래스 요소는 상황에 맞게 바꿔서 사용하시면 됩니다.
public class SampleItem 
{
  public string Key { get; set; }
  public string Value { get; set; }
  public string Description { get; set; }
  public object Tag { get; set; }
  
  // 생성자
  public SampleItem(string _key, string _value, string _desc, object _tag)
  {
    this.Key = _key;
    this.Value = _value;
    this.Description = _desc;
    this.Tag = _tag;
  }
  
  // 생성자 두번째 - 빈 아이템도 넣을 수 있으니까요.
  public SampleItem() 
  {
    this.Key = string.empty;
    this.Value = string.empty;
    this.Description = string.empty;
    this.Tag = null;
  }
  
  // 오늘의 하이라이트!! 
  public override string ToString() 
  {
    return string.format("[{0}] {1}", this.Value, this.Description);
  }
}

ToString() 오버라이드 함수만 추가하면 DisplayText 및 Popup시 리스트 박스에 나오는 값을 ToString()로 해결할 수 있습니다. 

 

사용법:

// ~~~
int idx = 1;
foreach (string Item in Items)
{
  SampleItem item = new SampleItem(idx.toString(), Item, "BlahBlah");
  cboSample.Properties.Items.Add(item);
  idx++;
}
// ~~~

오늘은 여기까지...

반응형