Como se refiere a un cuadro combinado, supongo que no desea utilizar el enlace de datos bidireccional (si es así, utilice un 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";
Para encontrar el país seleccionado en el cuadro combinado encuadernado, deberías hacer algo como: Country country = (Country)comboBox1.SelectedItem;
.
Si desea que el ComboBox se actualice dinámicamente, deberá asegurarse de que la estructura de datos que ha establecido como DataSource
implementos IBindingList
; una de esas estructuras es BindingList<T>
.
Consejo: asegúrese de vincular el DisplayMember
a una propiedad de la clase y no a un campo público. Si su clase lo usa public string Name { get; set; }
, funcionará, pero si lo usa public string Name;
, no podrá acceder al valor y, en su lugar, mostrará el tipo de objeto para cada línea en el cuadro combinado.