【问题标题】:Winforms Databinding Combobox reverting on lostfocusWinforms Databinding Combobox 在 lostfocus 上恢复
【发布时间】:2012-09-12 05:35:05
【问题描述】:

我有一个 Employee 对象,它有一个就业状态 ID (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。无论我做什么,值都会变回表单打开时的值!有什么想法吗?

【问题讨论】:

  • 我知道这是旧的,但我自己也有类似的问题。你有没有在保持绑定的同时解决这个问题?
  • 对不起,我最终放弃了愚蠢的绑定并自己编码:(

标签: c# winforms combobox


【解决方案1】:

我修改了你的代码

      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

我希望这会有所帮助:)

【讨论】:

  • 我知道无需绑定即可解决问题,但我有很多这样的控件,并希望在加载和保存时无需手动编码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 2012-12-30
  • 1970-01-01
  • 2022-07-29
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
相关资源
最近更新 更多