C# подклассы BindingList, ListChanged запускается за пределами класса, но не внутри класса
Я пытаюсь обернуть голову, как BindingList работает в фиктивном проекте. Конечной целью является [Microsoft.VisualBasic.PowerPacks.DataRepeater]->[BindingList POCO, которые поддерживаются Dapper/SQL Server Compact и автоматически выполняют CRUD для ListChanged] (в отличие от [DataRepeater]->[DataTable]; оставить отзыв о обоснованности такого подхода в комментариях).
Мое обоснование добавления записей () в конструкторе dummycollection заключалось в том, что он должен ВЫБРАТЬ существующие записи из БД во время его рождения.
Конкретный вопрос на данный момент: почему Add() ведет себя по-разному внутри и по-другому? Я ожидаю, что событие ListChanged должно сработать в обоих случаях, но это не так. Я уверен, что мне не хватает чего-то простого.
За пределами:
private void Form1_Shown(object sender, EventArgs e)
{
dummies = new dummycollection();
dummyBindingSource.DataSource = dummies;
dummies.Add(new dummy() { dummyid=0, dummytext="outside" }); //outside, gets message
}
Внутри:
class dummycollection : BindingList<dummy>
{
public dummycollection() // ctor
{
ListChanged += HandleChange;
Items.Add(new dummy() { dummyid=0, dummytext="ctor0" }); //inside, no message
}
private void HandleChange(object sender, ListChangedEventArgs e)
{
System.Diagnostics.Debug.Print(e.ListChangedType.ToString());
}
}
Кроме того, запись "инсайдеров" ведет себя странно по сравнению с записями "инсайдеров". Когда я помещаю DataGridView в форму для устранения неполадок и редактирую фиктивный текст в ретрансляторе и сетке, видимые обновления между ними являются случайными или непредсказуемыми при щелчке по различным элементам управления. Запись "постороннего" заметно обновляется более последовательно.