あなたがコンボボックスを参照しているので、私はあなたが双方向のデータバインディングを使用したくないと仮定しています(もしそうなら、の使用を見てくださいBindingList
)
public class Country
{
public string Name { get; set; }
public IList<City> Cities { get; set; }
public Country(string _name)
{
Cities = new List<City>();
Name = _name;
}
}
List<Country> countries = new List<Country> { new Country("UK"),
new Country("Australia"),
new Country("France") };
var bindingSource1 = new BindingSource();
bindingSource1.DataSource = countries;
comboBox1.DataSource = bindingSource1.DataSource;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Name";
バインドされたコンボボックスで選択された国を見つけるには、次のようにしますCountry country = (Country)comboBox1.SelectedItem;
。
ComboBoxを動的に更新する場合は、DataSource
実装として設定したデータ構造が実装されていることを確認する必要がありますIBindingList
。そのような構造の1つですBindingList<T>
。
ヒント:をDisplayMember
パブリックフィールドではなく、クラスのプロパティにバインドしていることを確認してください。クラスを使用public string Name { get; set; }
すると機能しますが、使用public string Name;
すると値にアクセスできなくなり、代わりにコンボボックスの各行のオブジェクトタイプが表示されます。