HOWTO · Csharp

C#에서 ComboBox의 선택된 값을 가져오는 방법

C#의 Windows Forms ComboBox에서 선택한 항목, 표시 텍스트 또는 바인딩된 값을 읽는 방법을 알아봅니다.

이 페이지의 내용

Windows Forms ComboBox에서 ‘선택된 값’은 세 가지 다른 것을 의미할 수 있습니다. 선택한 항목 객체, 해당 항목에 대해 표시되는 텍스트 또는 데이터 바인딩된 값입니다. 객체가 필요할 때는 ComboBox.SelectedItem을 읽고, 표시 텍스트가 필요할 때는 ComboBox.GetItemText를 사용하며, 컨트롤이 바인딩되어 있고 ValueMember로 구성된 필드가 필요할 때는 SelectedValue를 읽으세요. 이 예제는 컨트롤이 이미 폼에 있다고 가정하고 버튼 클릭 핸들러에서 선택 항목을 읽는 모습을 보여줍니다.

아래 예제는 Windows Forms 애플리케이션을 대상으로 합니다. 이 문서에는 런타임 실행 증거가 제공되지 않았으므로, 실행되지 않은 Windows 전용 예제로 제시되며 콘솔 출력을 주장하지 않습니다.

ComboBox.SelectedItem 속성을 사용하여 C#에서 ComboBox의 선택된 값 가져오기

ComboBox.SelectedItem은 목록에서 현재 선택한 개체를 가져오거나 설정하는 속성입니다. 항상 문자열을 반환하지는 않습니다. 항목이 사용자 지정 객체인 경우 결과는 해당 객체입니다. 항목의 문자열 표현이 애플리케이션에 필요한 경우에만 텍스트로 변환하세요. 다음의 완전한 예제는 폼을 만들고, 항목을 선택하고, 버튼을 클릭했을 때 현재 개체를 읽습니다.

using System;
using System.Windows.Forms;

internal static class Program
{
    [STAThread]
    private static void Main()
    {
        ApplicationConfiguration.Initialize();
        var form = new Form();
        var comboBox = new ComboBox { Left = 12, Top = 12, Width = 180 };
        comboBox.Items.AddRange(new object[] { "Red", "Green", "Blue" });
        comboBox.SelectedItem = "Green";
        var button = new Button { Left = 12, Top = 48, Text = "Read selection" };
        button.Click += (sender, args) =>
        {
            object selectedItem = comboBox.SelectedItem;
            string selectedText = Convert.ToString(selectedItem) ?? "";
            MessageBox.Show($"Item: {selectedText}");
        };
        form.Controls.Add(comboBox);
        form.Controls.Add(button);
        Application.Run(form);
    }
}

기존 폼에서는 동일한 작업을 클릭 핸들러에 배치할 수 있습니다. comboBox1.SelectedItem을 읽은 다음 항목의 실제 타입에 따라 처리하세요. 목록에 문자열이 포함되어 있으면 선택한 항목은 문자열입니다. 객체가 포함되어 있으면 해당 속성을 사용하기 전에 반환된 객체를 캐스트하거나 패턴 일치를 적용하세요. 선택 항목이 없을 수도 있으므로, 항목이 선택되기 전에 실행되는 코드는 SelectedItem이 null일 수 있음을 고려해야 합니다.

ComboBox.GetItemText를 사용하여 C#에서 ComboBox의 선택된 값 가져오기

ComboBox.GetItemText(item)은 컨트롤이 제공된 항목을 표시하는 데 사용하는 텍스트를 반환하는 메서드입니다. 현재 선택 항목의 표시 텍스트를 얻으려면 SelectedItem을 넣어 호출하세요. 이는 항목이 객체이고 ComboBox가 DisplayMember를 사용할 때 유용합니다. 객체에 대해 ToString()을 호출하면 다른 텍스트가 생성될 수 있습니다. GetItemText는 표시에 관한 질문에 답하고, SelectedValue는 데이터 바인딩에 관한 질문에 답합니다.

바인딩된 ComboBox의 경우 DisplayMember를 사용자에게 표시되는 속성으로 설정하고 ValueMember를 항목을 식별하는 속성으로 설정하세요. 그런 다음 애플리케이션에 해당 바인딩된 값이 필요할 때 comboBox1.SelectedValue를 가져오세요. 예제에서는 두 결과를 모두 보여주므로 코드에 필요한 결과를 선택할 수 있습니다.

using System;
using System.Collections.Generic;
using System.Windows.Forms;

internal sealed class City
{
    public int Id { get; set; }
    public string Name { get; set; } = "";
}

internal static class Program
{
    [STAThread]
    private static void Main()
    {
        ApplicationConfiguration.Initialize();
        var form = new Form();
        var comboBox = new ComboBox { Left = 12, Top = 12, Width = 180 };
        comboBox.DisplayMember = nameof(City.Name);
        comboBox.ValueMember = nameof(City.Id);
        comboBox.DataSource = new List<City>
        {
            new City { Id = 1, Name = "Paris" },
            new City { Id = 2, Name = "Tokyo" }
        };
        comboBox.SelectedValue = 2;
        var button = new Button { Left = 12, Top = 48, Text = "Read selection" };
        button.Click += (sender, args) =>
        {
            string displayedText = comboBox.GetItemText(comboBox.SelectedItem);
            object selectedValue = comboBox.SelectedValue;
            MessageBox.Show($"Text: {displayedText}; value: {selectedValue}");
        };
        form.Controls.Add(comboBox);
        form.Controls.Add(button);
        Application.Run(form);
    }
}

여기서 GetItemText는 표시 텍스트(예: Tokyo)를 읽고, SelectedValue는 바인딩된 Id(예: 2)를 읽습니다. 표시 텍스트를 식별자로 취급하지 말고 컨트롤에 구성된 값 멤버를 사용하세요. 두 예제 모두 Windows Forms 프로젝트가 필요하며 제공된 런타임 환경에서 실행되지 않았습니다.