簡體   English   中英

DataSource更改時,ComboBox不會自動更新?

[英]ComboBox doesn't automatically update when DataSource changes?

出於某種原因,當從DataSource(一個簡單的BindingList)添加或刪除項目時,ComboBox會相應地更新,但如果我編輯這樣的項目,它不會自動更新:

myBindingList[index].Name = "NewName";
myBindingList[index].Value = newValue;

為了在編輯項目時更新它而不是創建或刪除項目,我必須在更改后執行此操作:

myComboBox.DataSource = null;
myComboBox.DataSource = myBindingList;

這解決了問題,但它似乎是一個相當混亂的解決方案。 對於大型列表,它可能會變慢(我知道的過早優化),但仍然有辦法強制ComboBox更新而不完全重新分配其DataSource?

謝謝閱讀。

這在MSDN論壇中說明:

IBindingList接口包含ListChanged事件,其中如果分配給它的基礎數據源實現所述接口,則組合框之類的控件將掛鈎。 如果你添加,刪除,更改等你的IBindingList實現者,你的數據源必須用適當的ListChangeEventArgs引發相應的ListChanged。 這樣,只要更改了用於綁定到組合框的基礎源,就會刷新相應的UI控件(組合框)。

你說你正在使用BindingList,實際上你確實得到了組合框以反映添加或刪除項目事件。 我認為你應該以另一種方式更新BindingList中已有的項目,因為看起來像正確的BindingList事件沒有被觸發。

你可以調查那個或只是生活重置並重新分配DataSource,我不認為太糟糕,你在Statefull Windows窗體應用程序而不是在SatetLess Webforms中所以你一直有你的對象:)

您需要可觀察的集合和IPropertyChange實現:

綁定到ObservableCollection的ComboBox不會更新

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM