У меня есть вопрос относительно использования привязки данных и нескольких комбинированных ящиков.Почему выбранный элемент синхронизируется между несколькими комбобоксами, связанными с одним и тем же источником данных?
У меня есть класс менеджера, который обрабатывает данные, которые я хочу связать. Это выглядит следующим образом:
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 или больше comboboxes, подключенных к тому же BindingSource, они синхронизированы, поэтому, когда я выбираю элемент в combobox1, он также выбирается в combobox2.
Что я хочу, так это то, что в comboboxes есть те же данные в них и что они обновляются, если BindingSource изменяется без необходимости обновлять конкретную combobox (что она и делает), но что выбранный элемент не должен синхронизироваться.
Я установил источник данных к Наример, как это:
public ReceiptOUT()
{
InitializeComponent();
this.cmbBxSuppliers.DataSource = Managers.SupplierManager.BindingSource;
this.cmbBxSuppliers.BindingContext = new BindingContext();
this.cmbBxSuppliers.SelectedIndex = -1;
}
Все помощь (даже если это не связано с этим вопросом, но и на остальной части кода) Добро пожаловать!
Пожалуйста, ваши решения в качестве ответа. – ChrisF
Я как только смогу ... Я должен подождать 8 часов (2 часа слева) в первую очередь;) Я должен убедиться, что я немного активнее здесь, так что мой представитель поднимается. – Webslave