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 в форму для устранения неполадок и редактирую фиктивный текст в ретрансляторе и сетке, видимые обновления между ними являются случайными или непредсказуемыми при щелчке по различным элементам управления. Запись "постороннего" заметно обновляется более последовательно.

0 ответов

Другие вопросы по тегам