我在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);
}
当我打开表单时选择了正确的城市,但是当我从组合中选择另一个城市并移动到其他控件(松散的组合焦点)时,将在组合中返回旧的所选城市。
我搞砸了什么?
答案 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事件,您可以在其中查看是否存在绑定错误。