从BindingList中删除对象时,C#DataGridView引发异常
一切正常,直到我运行以下代码:从BindingList中删除对象时,C#DataGridView引发异常,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,一切正常,直到我运行以下代码: TicketLine tl = (TicketLine)dgTicketLines.SelectedRows[0].DataBoundItem; tl.Items--; if (tl.Items < 1) CurrentTicket.TicketLines.Remove(tl); TicketLine tl=(TicketLine)dgticketline.SelectedRows[0]。DataBoundItem; tl.项目——; 如果(tl.
TicketLine tl = (TicketLine)dgTicketLines.SelectedRows[0].DataBoundItem;
tl.Items--;
if (tl.Items < 1)
CurrentTicket.TicketLines.Remove(tl);
TicketLine tl=(TicketLine)dgticketline.SelectedRows[0]。DataBoundItem;
tl.项目——;
如果(tl.项目<1)
CurrentTicket.TicketLines.Remove(tl);
CurrentTicket.TicketLines是一个绑定列表
运行上述代码时,我在DataGridView中遇到几个IndexAutoFrange异常。使用
ObservableCollection来代替BindingList,它应该可以工作。您需要通过设置BindingList.RaiseListChangedEvents=false来抑制ListChanged事件然后调用BindingList.ResetBindings()代码>当您希望将任何更改传播到DataGridView时。当然还有其他方法可以做到这一点,但这对我来说一直都很好。BindingList有什么区别,有什么问题?@OMGKurtNilsen:ObservableCollection实现IObservable模式,并在添加或删除项目时传播事件。DataGrid将侦听这些行,并将删除这些行(或添加新的行)。实际上,当我不再刷新列表更改时的DGW时,问题就消失了。DataGridView应该在数据源更改时刷新自身。(它将与ObservableCollection一起使用)它也与BindingList一起使用。但不知何故,它认为清单上的项目比实际的要多。我使用的集合似乎没有问题。哪一行抛出异常?我遇到了类似的问题,但在访问DataBoundItem
属性时会引发indexoutfrange
异常。