【发布时间】:2017-01-05 08:45:48
【问题描述】:
我有一个数据绑定组合框。绑定如下:
cbo.DataBindings.Add(new Binding("SelectedItem", this.bindingSource, "Order", true, DataSourceUpdateMode.OnPropertyChanged, null));
它的填充如下:
cbo.DataSource = customer.Orders.Where(x => x.Month == month).ToList();
cbo.ValueMember = "OrderId";
cbo.DisplayMember = "OrderDate";
cbo.SelectedIndex = -1;
数据源是一个BindingSource,它又绑定到一个 DTO 类。
如果我使用TAB 选择一个项目并将焦点移动到另一个控件,则SelectedItem 设置正确。
但是,如果我选择一个项目并单击另一个控件,则在退出控件时,SelectedItem 将是先前选择的项目。
我尝试过结合SelectedItem、SelectedValue、OnPropertyChanged 和OnValidation,但如果不使用标签,都会导致同样的问题。
SO answer 中提供了部分解决方案,但在我的情况下,它不起作用。
目前的解决方法是:
(bindingSource.Current as Customer).Order = selectedOrder;
这应该是不必要的,因为数据源是绑定的。有没有更好的方法来强制在单击另一个控件而不是跳出时提交更改?
【问题讨论】:
标签: c# winforms data-binding