Bindingsource不会暂停绑定

时间:2016-07-04 14:48:58

标签: c# winforms data-binding objectlistview

我有一个显示自定义详细信息的表单,其中一个部分是与客户关联的银行帐户列表。此列表绑定到它自己的绑定源,因此在加载客户时我会这样做:

bsCustomer.DataSource = customer;
bsCustomerAccounts.DataSource = customer.Accounts;

我有ObjectListView绑定到bsCustomerAccounts。到目前为止一切正常。

要编辑特定帐户,我双击它并打开一个单独的表单:

using (var form = new CustomerAccountForm(selectedAccount))
{
    DialogResult result = form.ShowDialog(this);
    if (result == DialogResult.OK)
    {
        selectedAccount= form.Account;
    }
}

问题是当用户点击Cancel取消此表单中帐户的编辑时。原始bcCustomerAccounts因此列表仍在更新中。

我已尝试SuspendBindingRaiseListChangedEvents = false但绑定源仍在更新中。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

一开始看起来真的很令人惊讶,你认为当你没有将编辑过的对象分配回列表时,为什么要编辑列表项呢?

关键点在于:类是Reference Type

您将所选帐户传递给编辑表单,因为它是一个类,而类是引用类型,实际上您正在编辑列表中的同一个实例。因此,当您编辑属性时,无论单击“确定”还是“取消”,所有编辑都将直接应用于对象。