Khi bạn đang đề cập đến hộp kết hợp, tôi cho rằng bạn không muốn sử dụng kết hợp dữ liệu 2 chiều (nếu vậy, hãy xem cách sử dụng 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";
Để tìm quốc gia được chọn trong combobox ràng buộc, bạn sẽ làm điều gì đó như: Country country = (Country)comboBox1.SelectedItem;
.
Nếu bạn muốn ComboBox tự động cập nhật, bạn sẽ cần đảm bảo rằng cấu trúc dữ liệu mà bạn đã đặt làm phần DataSource
triển khai IBindingList
; một cấu trúc như vậy là BindingList<T>
.
Mẹo: hãy đảm bảo rằng bạn đang ràng buộc DisplayMember
Thuộc tính trên lớp chứ không phải trường công khai. Nếu lớp của bạn sử dụng public string Name { get; set; }
nó sẽ hoạt động nhưng nếu nó sử dụng public string Name;
nó sẽ không thể truy cập giá trị và thay vào đó sẽ hiển thị kiểu đối tượng cho mỗi dòng trong hộp tổ hợp.