0

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を使用してみました。私が何をしても、値はフォームを開いたときの値に戻ります。何か案は?

4

1 に答える 1

0

私はあなたのコードを修正しました

      List<LookupListItem> EmpStatuses = new List<LookupListItem>();
        foreach (EmploymentStatuses m in Enum.GetValues(typeof(EmploymentStatuses)))
        {
            EmpStatuses.Add(new LookupListItem((int)m, m.ToString()));
        }

EmpStatuses.Add(new LookupListItem(<selectedValue>, "SomeText")); //<- my modified code

        cboStatus.DataSource = EmpStatuses; // Enum.GetValues(typeof(CommonLibrary.Lookups.EmploymentStatuses));
        cboStatus.ValueMember = "ItemValue";
        cboStatus.DisplayMember = "ItemDesc";
        // Remove this part cboStatus.DataBindings.Add("SelectedValue", _presenter.SelectedOfficer, "EmploymentStatusID");

cboStatus.SelectedValue = <selectedValue> //<- my modified code

これが役立つことを願っています:)

于 2012-09-12T07:28:56.807 に答える