Ich kann die folgenden 2 Probleme nicht verstehen, die diesen Code gegeben werden. Ich habe eine Combobox einem benutzerdefinierten Objekt zugeordnet, und jedes Mal, wenn sich der ausgewählte Wert in der Combobox ändert, ändert sich auch das benutzerdefinierte Objekt.C# Datenbindung auf Combobox
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;
}
}
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 - warum, wenn ich manuell zweimal in einer Zeile auswählen (oder mehr) unterschiedlichen Wert auf der Combobox, ich habe nur einen Anruf zu BirthCity.Set Entsprechung der zuletzt gewählten Wert (und der Anruf scheint Brennen nur dann, wenn die Combobox hat den Fokus verloren)?
2 - warum, wenn ich buttonAddCity klicken und dann buttonDisplay ist die diplayed Stadt nicht derjenige ausgewählt (nicht die in der comobox angezeigt)
Sie sollten die Methoden GetHashCode() und Equals() überschreiben. – Rock