Data binding 数据绑定组合框在失去焦点时返回其上一个选定项

Data binding 数据绑定组合框在失去焦点时返回其上一个选定项,data-binding,combobox,Data Binding,Combobox,我在WinForm上有一个普通的组合框。我想用城市填充它,并将其数据绑定设置为我的业务对象CityID。对象是Office{ID,Name,CityID} 我像那样填充项目 public void LoadCityCombo(List<City> list) { CityComboBox.DisplayMember = "Name"; CityComboBox.ValueMember = "ID"; CityComboBox.DataSource = list

我在WinForm上有一个普通的组合框。我想用城市填充它,并将其数据绑定设置为我的业务对象CityID。对象是Office{ID,Name,CityID} 我像那样填充项目

public void LoadCityCombo(List<City> list)
{
    CityComboBox.DisplayMember = "Name";
    CityComboBox.ValueMember = "ID";
    CityComboBox.DataSource = list;
}       
当我打开表单时,会选择正确的城市,但当我从组合中选择另一个城市并移动到其他控件(松散组合焦点)时,组合中会返回旧选择的城市


我搞砸了什么?

问题出在这一排:

Binding b = new Binding("SelectedValue", office, "CityID");
CityComboBox.DataBindings.Add(b);
解决办法是

Binding b = new Binding("SelectedValue", office, "CityID", true);
CityComboBox.DataBindings.Add(b);

我不知道这是否是由我的本地化引起的,但在另一台计算机上,绑定工作时没有设置此属性。
奇怪的是,如果不设置此属性,就不会触发BindingCompleted事件,您可以在其中查看是否存在绑定错误。

如果不查看代码,就很难判断其他事件处理程序是否可能被触发并“搞乱”事情。您好,没有任何其他事件处理程序。这是一个全新的组合框添加到表单中。你能发布一些确实适合你的代码吗?
Binding b = new Binding("SelectedValue", office, "CityID", true);
CityComboBox.DataBindings.Add(b);
Binding b = new Binding("SelectedValue", office, "CityID");
b.FormatingEnabled = true;
CityComboBox.DataBindings.Add(b);