gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:50 25 4
gpt4 key购买 nike

我有一个关于使用数据绑定(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com