【问题标题】:Add item to binded combobox to list将项目添加到绑定的组合框以列表
【发布时间】:2026-01-30 00:45:02
【问题描述】:

我有一个组合框绑定到这样的列表

public List<CustomerLanguage> CurrentCustomerLanguageList
    {
        get { return _currentCustomerLanguageList; }
        set
        {
            _currentCustomerLanguageList = value;

            bsCustomerLanguages.DataSource = Presenter.CustomerLanguageToProxy(value);
            cbLanguage.DataSource = bsCustomerLanguages.DataSource;
            cbLanguage.DisplayMember = "LanguageName";
            cbLanguage.ValueMember = "Id";
        }
    }

在表单上,​​我有 + - 按钮,必须允许添加或删除组合框中的项目。

问题是:我不知道如何在没有完全刷新组合框的情况下将新项目添加到绑定源和列表。 当然,当我添加时,必须保留选定的值,并且不得引发任何 selectedvaluechanged 事件。

【问题讨论】:

    标签: c# winforms combobox bindingsource


    【解决方案1】:

    'bsCustomerLanguages' 是 BindingSource 吗?在这种情况下,如果您设置 cbLanguage.DataSource = bsCustomerLanguages 并直接添加到 bsCustomerLanguages,它应该可以工作

    【讨论】:

    • 但这会刷新组合框中的所有项目吗?我失去了选定的价值?
    • 如果您将组合框的数据源设置为绑定源 (bsCustomerLanguages) 而不是 bsCustomerLanguages.DataSource,则不会。 bindingsource 有自己的货币管理器,这意味着它记住了它的当前位置。如果组合框的数据源设置为绑定源,它将绑定源的位置与其选定项同步
    • 谢谢你,你的建议帮了我:)