설정가능한 데이터를 미리 삽입해두고 사용자가 그 중 하나를 선택할 수 있게 도와주는 역할을 하는 ComboBox, 일반적으로는 아래 이미지와 같이 그냥 편집창을 열어서 한줄한줄 데이터를 입력하실꺼라 생각합니다.

수동 ComboBox 데이터 추가

 

하지만 프로그램을 하다보면 이 Combobox와 열거형(Enum)을 같이 사용해야 할 때가 종종 있습니다. 예를 들면, 특정 모드나 설정, 세팅 변수들을 열거형으로 지정해 놓고 ComboBox에 추가한 다음 사용자한테 어떻게 설정할지 또는 어떻게 동작할지를 고르게 하는 경우가 있을텐데요. 이 경우 특정 모드 또는 설정은 열거형(Enum)으로 만들어 두시고 사용하시는 분들이 많을겁니다.  이 경우 위 이미지 처럼 수동으로 ComboBox에 값을 타이핑하지 않고 프로그램에서 추가하는 방식을 많이 선호하실거라 생각합니다. 

 

이러한 경우, 이제까지 제가 제일 많이 사용했던 방식은 아래와 같은 방식인데요.  

enum MODE { NONE, AUTO, MANUAL }

void SetComboBoxItem()
{
    string[] data = Enum.GetNames(typeof(MODE));
            
    foreach (string value in data)
    {
        comboBox1.Items.Add(value);
    }
}

void GetComboBoxSelectData()
{
    string selectString = comboBox1.SelectedItem.ToString();
    MODE selectValue = (MODE)(Enum.Parse(typeof(MODE), selectString));
}

 

이 코드도 특별하게 복잡하지 않은 좋은 코드라 생각합니다. 하지만 제가 이 글에서 알려드리고 싶은 방법은 이 코드가 아니며 단지 비교를 위해 사용한 것으로, 제가 이 글을 쓰는 목적은 이 아래 소스코드 입니다.

 

enum MODE { NONE, AUTO, MANUAL }

void SetComboBoxItem()
{
    comboBox1.DataSource = Enum.GetValues(typeof(MODE));
}

void GetComboBoxSelectData()
{
    MODE selectValue = (MODE)comboBox1.SelectedItem;
}

그냥 봐도 이전 소스코드보다 깔끔해진게, 이 코드 내용으로만 보면 함수화가 필요없을 정도로 간단한데요. 이 방법을 쓰고 나면 DataSource를 초기화(null)를 해야 다음 삽입이 가능한 점만 알려드리고 이번 포스팅은 짧게 마무리 하겠습니다.

+ Recent posts