[c#] 목록을 콤보 상자에 바인딩하는 방법? (Winforms)



Answers

배경 설명 : ComboBox / ListBox를 사용하는 두 가지 방법이 있습니다.

1) Items 객체에 Country Objects를 추가하고 Country를 Selecteditem으로 가져옵니다. 이것을 사용하려면 ToString of Country를 오버라이드해야합니다.

2) DataBinding을 사용하고 DataSource를 IList (List <>)로 설정하고 DisplayMember, ValueMember 및 SelectedValue를 사용합니다.

2)는 먼저 국가 목록이 필요합니다.

// not tested, schematic:
List<Country> countries = ...;
...; // fill 

comboBox1.DataSource = countries;
comboBox1.DisplayMember="Name";
comboBox1.ValueMember="Cities";

그리고 SelectionChanged에서,

if (comboBox1.Selecteditem != null)
{
   comboBox2.DataSource=comboBox1.SelectedValue;

}
Question

바인딩 소스를 클래스 객체의 목록에 연결하고 객체 값을 콤보 상자에 연결하려는 경우 누구나 방법을 제안 할 수 있습니다.

public class Country
    {
        public string Name { get; set; }
        public IList<City> Cities { get; set; }

        public Country()
        {
            Cities = new List<City>();
        }
    }

내 클래스이고 나는 combobox와 연결될 수있는 바인딩 소스에 이름 필드를 바인딩하고 싶습니다.




ToolStripComboBox를 사용하는 경우 DataSource가 노출되지 않습니다 (.NET 4.0).

List<string> someList = new List<string>();
someList.Add("value");
someList.Add("value");
someList.Add("value");

toolStripComboBox1.Items.AddRange(someList.ToArray());



다음과 같이 시도해보십시오.

yourControl.DataSource = countryInstance.Cities;

WebForms를 사용하는 경우 다음 줄을 추가해야합니다.

yourControl.DataBind();



Related