当有人启动我们的向导表单进程时,我有一个 BindingSource ,其中填充了 BindingList :
private void GetBillRuns(int billRunID)
{
bindingSourceBillRun.DataSource = ((IListSource)BillRunDC.ub_bill_runs.Where(b => b.bill_run_id == billRunID)).GetList() as BindingList<ub_bill_run>;
}
如果有人单击“后退”按钮,他们可以选择其他“向导”选项并继续前进。每次更改Panel索引时都会调用 EndEdit()例程:
void EndEdit()
{
bindingSourceBillRun.EndEdit();
}
在向导表单中,单击“后退”按钮时, BindingSource 将被清除。在关闭并处理实际的向导表单之前, BindingSource 本身永远不会被处理掉。
我们有一个有趣的错误:
如屏幕截图所示, ObjectDisposedException 已停止代码。此外,你可以看到我已经悬停在BindingSource上,而BindingSource没有被处理掉。此外,与之关联的数据源具有似乎也不会被丢弃的数据。
显然,根据在开始时选择的屏幕选项,将向billRunID
查询发送不同的GetBillRuns
。
导致 ObjectDisposedException 的原因是什么?
在使用GetBillRuns
方法重新填充之前,是否需要清除 BindingSource ?