2013-11-28 3 views
2

У меня есть вопрос относительно использования привязки данных и нескольких комбинированных ящиков.Почему выбранный элемент синхронизируется между несколькими комбобоксами, связанными с одним и тем же источником данных?

У меня есть класс менеджера, который обрабатывает данные, которые я хочу связать. Это выглядит следующим образом:

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; 
    } 

Все помощь (даже если это не связано с этим вопросом, но и на остальной части кода) Добро пожаловать!

+0

Пожалуйста, ваши решения в качестве ответа. – ChrisF

+0

Я как только смогу ... Я должен подождать 8 часов (2 часа слева) в первую очередь;) Я должен убедиться, что я немного активнее здесь, так что мой представитель поднимается. – Webslave

ответ

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

Смежные вопросы