comment lier une liste à une liste déroulante? (Winforms)

Je veux connecter une source de liaison à une liste d’objects de classe, puis la valeur des objects dans une liste déroulante. Quelqu’un peut-il suggérer comment le faire?

public class Country { public ssortingng Name { get; set; } public IList Cities { get; set; } public Country() { Cities = new List(); } } 

est ma classe et je veux lier son champ de nom à une source de liaison qui pourrait alors être associée à une liste déroulante

Comme vous faites référence à une liste déroulante, je suppose que vous ne voulez pas utiliser la liaison de données bidirectionnelle (si c’est le cas, utilisez une liste de BindingList )

 public class Country { public ssortingng Name { get; set; } public IList Cities { get; set; } public Country(ssortingng _name) { Cities = new List(); Name = _name; } } 

 List counsortinges = new List { new Country("UK"), new Country("Australia"), new Country("France") }; bindingSource1.DataSource = counsortinges; comboBox1.DataSource = bindingSource1.DataSource; comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "Name"; 

Pour un document d’information, il y a 2 façons d’utiliser un ComboBox / ListBox

1) Ajoutez des objects de pays à la propriété Items et récupérez un pays comme élément sélectionné. Pour l’utiliser, vous devez remplacer le ToSsortingng du pays.

2) Utilisez DataBinding, définissez DataSource sur IList (List <>) et utilisez DisplayMember, ValueMember et SelectedValue

Pour 2) vous aurez besoin d’une liste de pays en premier

 // not tested, schematic: List counsortinges = ...; ...; // fill comboBox1.DataSource = counsortinges; comboBox1.DisplayMember="Name"; comboBox1.ValueMember="Cities"; 

Et puis dans le SelectionChanged,

 if (comboBox1.Selecteditem != null) { comboBox2.DataSource=comboBox1.SelectedValue; } 
 public MainWindow(){ List personList = new List(); 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"); } 

boom.

Essayez quelque chose comme ça:

 yourControl.DataSource = countryInstance.Cities; 

Et si vous utilisez WebForms, vous devrez append cette ligne:

 yourControl.DataBind(); 
 public class Country { public ssortingng Name { get; set; } public IList Cities { get; set; } public Country() { Cities = new List(); } } public class City { public ssortingng Name { get; set; } } List Counsortinges = new List { 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 = Counsortinges; member_CountryComboBox.DataSource = bindingSource1.DataSource; member_CountryComboBox.DisplayMember = "Name"; member_CountryComboBox.ValueMember = "Name"; 

C’est le code que j’utilise maintenant

Si vous utilisez un ToolSsortingpComboBox, il n’y a pas de DataSource exposé (.NET 4.0):

 List someList = new List(); someList.Add("value"); someList.Add("value"); someList.Add("value"); toolSsortingpComboBox1.Items.AddRange(someList.ToArray());