2009-06-17 50 views
2

這是使用winforms。奇怪的兩個控件/相同的數據源問題

我有一個列表框和一個組合框,都綁定到相同的數據源,相同的顯示成員,相同的值成員。所有綁定都很好,並且這兩個項目都顯示在兩個控件中。

問題是,當我在一個控件中更改選區時,它將移動到另一個控件中的相同索引。我沒有任何事件與任何控制有關。這只是發生在自己身上。有沒有人遇到過這個問題?

回答

2

數據源是一個單獨的對象。當其中一個控件更改數據源活動行時,它會向其他控件發送更新通知以相應地移動。這是正常和預期的行爲。

它背後的想法是簡化導航記錄集,同時保持所有綁定控件同步。

如果您不希望這樣,請使用綁定到相同基礎數據的兩個數據源。

0

我認爲這可能是一個功能。對於主/明細類型表單。

+0

如果是這樣,我可以關閉它嗎? – Josh 2009-06-17 15:26:59

3

這是因爲兩個控件共享相同的BindingContext/CurrencyManager。控件從其容器控件繼承BindingContext。 BindingContext只爲每個DataSource維護一個CurrencyManager。如果你想有兩個不同的CurrencyManagers,你需要有兩個BindingContext。

所以當一旦控件選擇被改變,currencyManagaer.Current得到更新。這會影響共享相同DataSource的所有控件。

實例化新的BindingContext並將其分配給該組合框的一個BindingContext屬性:

comboBox2.BindingContext =新的BindingContext();

這應該解決問題。

+0

這應該被標記爲答案! – vinayan 2012-07-25 05:02:04