Home C# ComboBox의 SelectedValue DB 없이 사용하는 법.
Post
Cancel

C# ComboBox의 SelectedValue DB 없이 사용하는 법.

* 이전 블로그 백업글 : 이 게시물은 2008~2013년 사이에 작성된 것으로, 2022년 현재의 환경과는 맞지 않을 수 있습니다.

C# ComboBox에는 텍스트-값 쌍을 넣어서 아이템 선택시 폼에는 텍스트가 뜨고, SelectedValue 멤버변수에는 선택된 아이템의 값이 들어가도록 할 수 있다. 그런데 정작 이걸 입력하는 방법이 DataSet같은 걸 DataSouece에 바인딩하는 법밖에 없어서, 일반적으로는 DB에서 가져온 테이블을 바인딩하거나 할 때만 사용이 가능하다.

이 기능을 코드에서 직접 처리할 수 있는 클래스를 제작해 보았다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class ComboBoxItemSet
{
    // 텍스트-값 쌍을 나타내는 내부 클래스.
    class TextValuePair
    {
        string m_text;
        object m_value;
        public string Text { get { return m_text; } }
        public object Value { get { return m_value; } }

        public TextValuePair(string text, object value)
        {
            m_text = text;
            m_value = value;
        }

        public override string ToString()
        {
            return m_value.ToString();
        }
    }

    ArrayList list = new ArrayList();

    public void Add(string text, object value)
    {
        list.Add( new TextValuePair(text, value) );
    }

    public void Bind(System.Windows.Forms.ComboBox comboBox)
    {
        if (list.Count < 1) return; // 값이 없으면 바인딩할 필요가 없다.

        comboBox.DataSource = list;
        comboBox.DisplayMember = "Text";
        comboBox.ValueMember = "Value";         
    }
}

사용은 Add 함수로 텍스트-값 쌍을 입력한 후, Bind 함수로 연결할 콤보박스 컨트롤을 지정해주면 된다.

This post is licensed under CC BY 4.0 by the author.