c# - llenar - cómo vincular una lista a un combobox?(Winforms)
llenar combobox c# (6)
Como se refiere a un cuadro combinado, supongo que no desea utilizar el enlace de datos bidireccional (si es así, consulte el uso de una lista 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") };
bindingSource1.DataSource = countries;
comboBox1.DataSource = bindingSource1.DataSource;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Name";
Quiero conectar un origen de enlace a una lista de objetos de clase y, a continuación, valor de objetos a un cuadro combinado. ¿Alguien puede sugerir cómo hacerlo?
public class Country
{
public string Name { get; set; }
public IList<City> Cities { get; set; }
public Country()
{
Cities = new List<City>();
}
}
es mi clase y quiero vincular su campo de nombre a una fuente de enlace que luego podría asociarse con un cuadro combinado
Para obtener un resumen, hay 2 formas de usar un ComboBox / ListBox
1) Agregue objetos de país a la propiedad de elementos y recupere un país como elemento seleccionado. Para usar esto, debe anular el ToString del país.
2) Utilice DataBinding, configure DataSource en un IList (List <>) y use DisplayMember, ValueMember y SelectedValue
Para 2) primero necesitará una lista de países
// not tested, schematic:
List<Country> countries = ...;
...; // fill
comboBox1.DataSource = countries;
comboBox1.DisplayMember="Name";
comboBox1.ValueMember="Cities";
Y luego en SelectionChanged,
if (comboBox1.Selecteditem != null)
{
comboBox2.DataSource=comboBox1.SelectedValue;
}
Pruebe algo como esto:
yourControl.DataSource = countryInstance.Cities;
Y si usa WebForms, deberá agregar esta línea:
yourControl.DataBind();
Si está utilizando una ToolStripComboBox, no hay una DataSource expuesta (.NET 4.0):
List<string> someList = new List<string>();
someList.Add("value");
someList.Add("value");
someList.Add("value");
toolStripComboBox1.Items.AddRange(someList.ToArray());
public MainWindow(){
List<person> personList = new List<person>();
personList.Add(new person { name = "rob", age = 32 } );
personList.Add(new person { name = "annie", age = 24 } );
personList.Add(new person { name = "paul", age = 19 } );
comboBox1.DataSource = personList;
comboBox1.DisplayMember = "name";
comboBox1.SelectionChanged += new SelectionChangedEventHandler(comboBox1_SelectionChanged);
}
void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
person selectedPerson = comboBox1.SelectedItem as person;
messageBox.Show(selectedPerson.name, "caption goes here");
}
auge.
public class Country
{
public string Name { get; set; }
public IList<City> Cities { get; set; }
public Country()
{
Cities = new List<City>();
}
}
public class City { public string Name { get; set; } }
List<Country> Countries = new List<Country>
{
new Country
{
Name = "Germany",
Cities =
{
new City {Name = "Berlin"},
new City {Name = "Hamburg"}
}
},
new Country
{
Name = "England",
Cities =
{
new City {Name = "London"},
new City {Name = "Birmingham"}
}
}
};
bindingSource1.DataSource = Countries;
member_CountryComboBox.DataSource = bindingSource1.DataSource;
member_CountryComboBox.DisplayMember = "Name";
member_CountryComboBox.ValueMember = "Name";
Este es el código que estoy usando ahora