Salut,
Je ne cromprend pas les deux comportements suivant avec le code ci dessous. J'ai mappé une combobox a un object custom et je veux qu'a chaque fois que l'on sélectionne une valeur différente via la combobox, que cette valeur se retrouve dans l'objet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public partial class MainForm : Form { private Person _person; public MainForm() { InitializeComponent(); _person = new Person(); //Populating the combox, we have this.comboBoxCities.DataSource = this.cityBindingSource; cityBindingSource.Add(new City("London")); cityBindingSource.Add(new City("Paris")); _person.BirthCity = new City("Roma"); cityBindingSource.Add(_person.BirthCity); cityBindingSource.Add(new City("Madrid")); //Doing the binding comboBoxCities.DataBindings.Add("SelectedItem", _person, "BirthCity"); } private void buttonDisplay_Click(object sender, EventArgs e) { MessageBox.Show("BirthCity=" + _person.BirthCity.Name); } private int i = 0; private void buttonAddCity_Click(object sender, EventArgs e) { City city = new City("City n°" + i++); cityBindingSource.Add(city); comboBoxCities.SelectedItem = city; } }1-Pourquoi quand je sélectionne manuellement 2 fois à la suite (ou plus) des valeurs différentes dans la combobox, j'ai un seul appel a birthcity.Set avec la dernière valeur sélectionnée (et pourquoi cet appel à l'air d'intervenir uniquement après la perte du focus par la combobox) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public class Person { private City _birthCity; public City BirthCity { get { return _birthCity; } set { Console.WriteLine("Setting birthcity : " + value.Name); _birthCity = value; } } } public class City { public string Name { get; set; } public City(string name) { Name = name; } public override string ToString() { return Name; } }
2- Pourquoi quand je clique sur buttonAddCity puis ensuite sur buttonDisplay, la valeur affichéz n'est pas la meme que la valeur sélectionnée (ie le binding n'est pas bon) ?
Si je n'ai pas été clair, je peux approfondir.
Des idées ?
Partager