我有一個列表框綁定到列表。每次ListBox更新以反映集合時,SelectedIndex都會變爲頂層項目。如何阻止這種行爲並保留當前的SelectedIndex?綁定列表框SelectedIndex不斷變化
[更新]
我發現了一個更好地收集到使用這種功能 - 對 '的BindingList':http://msdn.microsoft.com/en-us/library/ms132679(v=VS.90).aspx。
WulfgarPro。
我有一個列表框綁定到列表。每次ListBox更新以反映集合時,SelectedIndex都會變爲頂層項目。如何阻止這種行爲並保留當前的SelectedIndex?綁定列表框SelectedIndex不斷變化
[更新]
我發現了一個更好地收集到使用這種功能 - 對 '的BindingList':http://msdn.microsoft.com/en-us/library/ms132679(v=VS.90).aspx。
WulfgarPro。
當[...]更新以反映集合
這是否意味着有一個新的集合?如果是這樣,「同一個位置」是什麼意思?
當重新綁定到(nother)列表時,您將不得不保存&恢復索引位置。只需在您更新DataSource的地方編寫代碼即可。
使用BindingList集合而不是List解決了很多我的問題。我最初使用線程和委託來查詢集合並調用ListBox.DataSource = [..]來更新綁定。這很慢,麻煩而且容易出錯。更不用說我最初的問題,無法輕鬆保留SelectedItem。切換到BindingList允許我刪除線程和委託,現在一切按預期工作。爲ListBox指定所需的顯示屬性可以使用ListBox.DisplayMember = [..]來實現。
WulfgarPro。
@ Henk Holterman,「相同的位置」我的意思是「相同的項目」 - 我試圖實現你的建議。我正在使用線程來檢索新項目 - 當綁定集合被更改時不應該自動更新ListBox嗎?我似乎沒有ListBox更新反映集合內的項目,而無需使用委託調用ListBox.DataSource = [..]。 – wulfgarpro
@wulf,BindingList可能會有所幫助。但是如果加載新的(實例)項目,'相同的項目'並不是那麼簡單。 –
BindingList是完美的!謝謝你的幫助。 –
wulfgarpro