このコードでは、次の2つの問題を理解できません。私はカスタムオブジェクトにコンボボックスをマップし、コンボボックスで選択した値が変わるたびにカスタムオブジェクトも変わります。コンボボックスでのC#データバインド
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 - 私は手動でコンボボックスの上に別の値を2回連続で選択します(またはそれ以上)のとき、私は彼witht BirthCity.Setに最後に選択した値を一つだけ電話を受けた(と呼び出しがときにのみ発火ようだ理由コンボボックスがフォーカスを失った?)
2 - 私は、buttonAddCityとbuttonDisplayをクリックすると、diplayed都市が選択された一つ(不comoboxに表示された1つ)
GetHashCode()メソッドとEquals()メソッドをオーバーライドする必要があります。 – Rock