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());