从BindingList中删除对象时,C#DataGridView抛出异常

时间:2011-11-22 14:59:00

标签: c# .net winforms datagridview

一切正常,直到我运行此代码:

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

CurrentTicket.TicketLines是BindingList<TicketLine>

运行上面的代码时,我在DataGridView中得到了几个IndexOutOfRange异常。

2 个答案:

答案 0 :(得分:0)

取一个ObservableCollection<TicketLine>而不是BindingList,它应该可以工作。

答案 1 :(得分:0)

您需要通过设置BindingList<TicketLine>.RaiseListChangedEvents = false;来禁止ListChanged事件,然后在希望任何更改传播到DataGridView时调用BindingList<TicketLine>.ResetBindings();。当然还有其他方法可以做到这一点,但这对我来说一直很好。