Я хочу отобразить пользовательскую коллекцию в приложении DataGridView в приложении Windows Forms. Эта пользовательская коллекция реализует Icollection и ienumerable . Я настроил BindingSource , используя коллекцию в качестве свойства .datasource. DataGridView установлен для использования My BindingSource , как это DataSource. Когда я добавляю новый элемент в коллекцию, используя метод bindingsource.add () , DataGridView правильно обновляется с новым элементом. DataSource BindingSource < /code>, с другой стороны, не: < /p>
Код: Выделить всё
MyCustomCollection myCollection = new MyCustomCollection();
myCollection.Add(myCustomObject1);
myCollection.Add(myCustomObject2);
myBindingSource.DataSource(myCollection);
myBindingSource.Add(myCustomObject3);
< /code>
В вышеуказанном коде внутренний список MyBindingSource содержит правильное количество записей (3), а DataGridView < /code> также содержит три записи, но MyCollection содержит только две записи Я знаю, что изменение базового MyCollection не обновит BindingSource
или DataGridView , поскольку это не привязка , но у меня было впечатление, что обновление BindingSource напрямую гарантирует, что MyCollection была обновлена одновременно. И обновили ли это при взаимодействии с BindingSource напрямую? Части (Collection, BindingSource, DataGridView) следующие: < /p>
myCollection.Add(myCustomObject3);
myBindingSource.DataSource = null;
myBindingSource.DataSource = myCollection;
< /code>
Я уверен, что есть лучший способ атаковать эту проблему, но это единственный метод, который дал результаты, которые я ожидал.
Подробнее здесь:
https://stackoverflow.com/questions/145 ... collection