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;
    }
 
}
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; }
}
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) ?

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 ?