我有一个 Employee 对象,它有一个 EmploymentStatusID (int) 字段。
我有一个从就业状态枚举填充并绑定到 Form_Load 中的字段的组合框:
List<LookupListItem> EmpStatuses = new List<LookupListItem>();
foreach (EmploymentStatuses m in Enum.GetValues(typeof(EmploymentStatuses)))
{
EmpStatuses.Add(new LookupListItem((int)m, m.ToString()));
}
cboStatus.DataSource = EmpStatuses; // Enum.GetValues(typeof(CommonLibrary.Lookups.EmploymentStatuses));
cboStatus.ValueMember = "ItemValue";
cboStatus.DisplayMember = "ItemDesc";
cboStatus.DataBindings.Add("SelectedValue", _presenter.SelectedOfficer, "EmploymentStatusID");
当表单出现时,组合框中会显示正确的值,但是如果用户更改了该值,则会在组合框失去焦点时将其设置回来!
相同表单上的文本框和简单组合框(即带有字符串集合的组合框)都可以。
您可以看到我最初尝试仅在枚举上使用 GetValues,但我将其更改为列表以查看是否有帮助。我试过使用 BindingList,我试过在绑定上使用 DataSourceUpdateMode.OnValidation。我什至尝试在 selectedindexchanged 事件上使用 cboStatus.DataBindings[0].WriteValue。无论我做什么,值都会变回表单打开时的值!有任何想法吗?