我对使用数据绑定和多个组合框有疑问。
我有一个管理我想要绑定的数据的管理器类。它看起来像这样:
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更改而不需要刷新特定的组合框(它会更新),它们会更新,但所选项目不应该同步。 / p>
我将数据源设置为这样的组合框:
public ReceiptOUT()
{
InitializeComponent();
this.cmbBxSuppliers.DataSource = Managers.SupplierManager.BindingSource;
this.cmbBxSuppliers.BindingContext = new BindingContext();
this.cmbBxSuppliers.SelectedIndex = -1;
}
欢迎所有帮助(即使它与此问题无关,但也与其他代码无关)!
答案 0 :(得分:0)
解决这个问题......这么容易我一定是盲目的;)
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