Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从BindingList中删除对象时,C#DataGridView引发异常_C#_.net_Winforms_Datagridview - Fatal编程技术网

从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
异常。