Обновление BindingSource в WinForms не обновляет коллекцию источников данных
Я хочу отобразить пользовательскую коллекцию вDataGridView
в приложении Windows Forms. Эта пользовательская коллекция реализуетICollection
, а такжеIEnumerable
, Я создалBindingSource
, используя коллекцию в качестве свойства .DataSource.DataGridView
настроен использовать мойBindingSource
как это's DataSource. Когда я добавляю новый элемент в коллекцию, используяBindingSource.Add()
метод,DataGridView
корректно обновляется с новым элементом.BindingSource
DataSource, с другой стороны, не:
MyCustomCollection myCollection = new MyCustomCollection();
myCollection.Add(myCustomObject1);
myCollection.Add(myCustomObject2);
myBindingSource.DataSource(myCollection);
myBindingSource.Add(myCustomObject3);
В приведенном выше коде, myBindingSource 'внутренний список содержит правильное количество записей (3), аDataGridView
также содержит три записи, но myCollection содержит только две записи. Я знаю, что изменение базового myCollection НЕ будет обновлятьBindingSource
илиDataGridView
так как это неBindingList
, но у меня сложилось впечатление, что обновлениеBindingSource
напрямую обеспечит одновременное обновление myCollection.
Есть ли способ использовать коллекцию, которая нетBindingList
и обновлять его при взаимодействии сBindingSource
напрямую?
Обновить: One way I 'Мы обновили данные по всем частям (Collection, BindingSource, DataGridView) следующим образом:
myCollection.Add(myCustomObject3);
myBindingSource.DataSource = null;
myBindingSource.DataSource = myCollection;
я уверен, чтоЭто лучший способ решить эту проблему, но это единственный метод, которыйЯ получил ожидаемые результаты.