Здравствуйте, Ziggi111, Вы писали:
F>>Помогите разобраться !!
F>>У контрола есть DataSourse типа BindingSource, У Неготоже есть DataSourse типа List<T>.
F>>Вопрос как контрол может узнать о изменение колекции List-а?
F>>Знаю одно DataGridView Вроде как то догадывается но КАК??
Z>А это разве не помогает?
Z>BindingSource.ListChanged += new ListChangedEventHandler (BindingSource_ListChanged);
Нет, не поможет.
Для того, чтобы BindingSource мог уведомлять об изменении коллекции, его источник данных должен реализовывать интерфейс IBindingSource.
Т.е. если ты делаешь myBindingSource.DataSource = typeof(Foo), тогда нижележащим контейнером данных для BindingSource будет BindingList<T>, который поддерживает уведомления и твой грид будет обновляться автоматически.
А если ты сделаешь так: myBindingSource.DataSource = new List<Foo>();, то сам BindingSource никогда не сможет узнать об изменении коллекции и грид обновляться не будет.
Вывод:
делай так:
myBindingSource.DataSource = typeof(Foo);
и операции над коллекцией выполняй непосредственно над объектом BindingSource, т.е. так:
myBindingSource.Add(new Foo());
myBindingSource.Remove();
и т.д.
Тогда грид будет обновляться автоматом.