我有一个关于使用数据绑定(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> _suppliers
至 BindingList<Classes.Supplier> _suppliers
我是一名优秀的程序员,十分优秀!