丢失焦点时,Databound ComboBox返回其先前选定的项目

时间:2012-10-19 13:58:40

标签: data-binding combobox

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

public void LoadCityCombo(List<City> list)
{
    CityComboBox.DisplayMember = "Name";
    CityComboBox.ValueMember = "ID";
    CityComboBox.DataSource = list;
}       

加载对象

public void LoadOffice(Office office)
{
    NameTextBox.DataBindings.Add("Text", office, "Name");
    AddressTextBox.DataBindings.Add("Text", office, "Address");
    Binding b = new Binding("SelectedValue", office, "CityID");
    CityComboBox.DataBindings.Add(b);
}  

当我打开表单时选择了正确的城市,但是当我从组合中选择另一个城市并移动到其他控件(松散的组合焦点)时,将在组合中返回旧的所选城市。

我搞砸了什么?

1 个答案:

答案 0 :(得分:0)

问题在于这一行:

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

修复

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

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