0

我在 WinForm 上有一个普通的 ComboBox。我想用城市填充它并将其数据绑定设置为我的业务对象 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);
}  

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

我在搞砸什么?

4

1 回答 1

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 事件,您可以在其中查看是否存在绑定错误。

于 2012-10-30T09:20:23.010 回答