C # DataGridView выдает исключение при удалении объекта из BindingList - PullRequest
1 голос
/ 22 ноября 2011

Все работало нормально, пока я не запустил этот код:

TicketLine tl = (TicketLine)dgTicketLines.SelectedRows[0].DataBoundItem;
tl.Items--;
if (tl.Items < 1)
    CurrentTicket.TicketLines.Remove(tl);

CurrentTicket.TicketLines - это BindingList<TicketLine>

Я получаю несколько исключений IndexOutOfRange в DataGridView при запуске вышеуказанного кода.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2011

Вам нужно подавить событие ListChanged, установив BindingList<TicketLine>.RaiseListChangedEvents = false;, а затем вызвать BindingList<TicketLine>.ResetBindings();, если вы хотите, чтобы любые изменения были переданы в DataGridView. Конечно, есть и другие способы, но у меня это всегда получалось.

0 голосов
/ 22 ноября 2011

Возьмите ObservableCollection<TicketLine> вместо BindingList, и он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...