EmploymentStatusID(int)フィールドを持つEmployeeオブジェクトがあります。
Employment Status列挙型から入力され、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を使用してみました。私が何をしても、値はフォームを開いたときの値に戻ります。何か案は?