Karena Anda mengacu pada kotak kombo, saya berasumsi Anda tidak ingin menggunakan penyatuan data 2 arah (jika demikian, lihat menggunakan a 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";
Untuk menemukan negara yang dipilih di combobox terikat, Anda akan melakukan sesuatu seperti: Country country = (Country)comboBox1.SelectedItem;
.
Jika Anda ingin ComboBox diperbarui secara dinamis, Anda harus memastikan bahwa struktur data yang telah Anda tetapkan sebagai DataSource
implement IBindingList
; salah satu struktur seperti itu BindingList<T>
.
Tip: pastikan Anda mengikat DisplayMember
ke Properti di kelas dan bukan ke bidang publik. Jika Anda menggunakan kelas public string Name { get; set; }
itu akan berhasil tetapi jika menggunakannya public string Name;
tidak akan dapat mengakses nilai dan sebaliknya akan menampilkan tipe objek untuk setiap baris di kotak kombo.