2016-07-04 88 views
0

我有一個顯示自定義詳細信息的表單,其中一個部分是與客戶關聯的銀行帳戶列表。這個列表綁定到它自己的BindingSource,所以加載客戶,當我做:Bindingsource不會暫停綁定

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

我有一個綁定到bsCustomerAccountsObjectListView。到目前爲止一切正常。

編輯特定帳戶,就可以了我雙擊並打開一個單獨的形式:

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

問題是,當用戶點擊Cancel取消帳戶的編輯以這種形式。原來的bcCustomerAccounts因此名單仍在更新中。

我試過SuspendBindingRaiseListChangedEvents = false但是bindingsource仍在更新。

我錯過了什麼嗎?

回答

0

看起來真的很讓人吃驚,首先,您認爲當您沒有將編輯的對象分配回列表中時,爲什麼編輯了列表項目?

關鍵是這裏:類是Reference Type

您將選定的帳戶傳遞給編輯表單,並且由於它是一個類和類是引用類型,實際上您正在編輯列表中的同一個實例。因此,當您編輯屬性時,無論點擊「確定」還是「取消」,所有編輯都直接應用於對象。