2011-01-25 34 views

回答

2

當[...]更新以反映集合

這是否意味着有一個新的集合?如果是這樣,「同一個位置」是什麼意思?

當重新綁定到(nother)列表時,您將不得不保存&恢復索引位置。只需在您更新DataSource的地方編寫代碼即可。

+0

@ Henk Holterman,「相同的位置」我的意思是「相同的項目」 - 我試圖實現你的建議。我正在使用線程來檢索新項目 - 當綁定集合被更改時不應該自動更新ListBox嗎?我似乎沒有ListBox更新反映集合內的項目,而無需使用委託調用ListBox.DataSource = [..]。 – wulfgarpro

+0

@wulf,BindingList可能會有所幫助。但是如果加載新的(實例)項目,'相同的項目'並不是那麼簡單。 –

+0

BindingList 是完美的!謝謝你的幫助。 – wulfgarpro

1

使用BindingList集合而不是List解決了很多我的問題。我最初使用線程和委託來查詢集合並調用ListBox.DataSource = [..]來更新綁定。這很慢,麻煩而且容易出錯。更不用說我最初的問題,無法輕鬆保留SelectedItem。切換到BindingList允許我刪除線程和委託,現在一切按預期工作。爲ListBox指定所需的顯示屬性可以使用ListBox.DisplayMember = [..]來實現。

WulfgarPro。