c# - 为什么所选项目在绑定(bind)到同一数据源的多个组合框之间同步?

标签 c# winforms data-binding combobox

我有一个关于使用数据绑定(bind)和多个组合框的问题。

我有一个管理器类来处理我要绑定(bind)的数据。它看起来像这样:

public static class SupplierManager
{
    private static List<Classes.Supplier> _suppliers = null;
    private static BindingSource _bindingSource = null;

    public static void Add(Classes.Supplier supplier)
    {
        if (_suppliers == null)
        {
            _suppliers = new List<Classes.Supplier>();
            _suppliers.Add(new Classes.Supplier());
        }

        if (_bindingSource == null)
        {
            _bindingSource = new BindingSource(_suppliers, null);
        }

        _bindingSource.Add(supplier);
        _suppliers.Sort();
    }

    public static void Remove(Classes.Supplier supplier)
    {
        _bindingSource.Remove(supplier);
        _suppliers.Sort();
    }

    public static BindingSource BindingSource
    {
        get
        {
            if (_suppliers == null)
            {
                _suppliers = new List<Classes.Supplier>();
                _suppliers.Add(new Classes.Supplier());
            }

            if (_bindingSource == null)
            {
                _bindingSource = new BindingSource(_suppliers, null);
            }

            return _bindingSource;
        }
    }
}

我不确定这是否是执行此操作的正确方法(欢迎所有输入!)但它对我有用但我的问题是当我有 2 个或更多组合框连接到同一个 BindingSource 时它们是同步,这样当我在 combobox1 中选择一个项目时,它也会在 combobox2 中被选中。

我想要的是组合框在其中具有相同的数据,并且如果 BindingSource 发生变化,它们会得到更新而无需刷新特定的组合框(它确实如此),但所选项目不应同步。

我将数据源设置为这样的组合框:

public ReceiptOUT()
    {
        InitializeComponent();

        this.cmbBxSuppliers.DataSource = Managers.SupplierManager.BindingSource;
        this.cmbBxSuppliers.BindingContext = new BindingContext();
        this.cmbBxSuppliers.SelectedIndex = -1;
    }

欢迎所有帮助(即使它与这个问题无关,但也与代码的其余部分相关)!

最佳答案

通过这样做解决了它...太简单了我一定是瞎了;)

public static BindingSource BindingSource
{
    get
    {
        if (_suppliers == null)
        {
            _suppliers = new BindingList<Classes.Supplier>();
        }

        return new BindingSource(_suppliers, null);
    }
}

并更改了 List<Classes.Supplier> _suppliersBindingList<Classes.Supplier> _suppliers

关于c# - 为什么所选项目在绑定(bind)到同一数据源的多个组合框之间同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20259844/

相关文章:

c# winforms datagridview 添加行

c# - WPF 数据绑定(bind) : Cancelled property change - Combobox misaligns

c# - HttpWebRequest.Create 返回 (500) 内部服务器错误

c# - 如何从 FileStream 报告进度

c# - Gmap.Net 中的 map 旋转以使其跟踪

.net - Winforms 样式/UI 外观和感觉提示

c# - 如何将 int 或 bool 转换为 checkState

c# - 数据绑定(bind)期间不绑定(bind)继承的属性

c# - WPF ComboBox 在初始加载时绑定(bind)到对象

c# - var的特殊性是什么?