我有一個顯示約300項的ListView。當某些東西被改變,我需要重新填充列表時,我希望滾動位置保持不變,因此相同的項目仍然可見並且位於列表中的相同位置。 「EnsureVisible」方法很糟糕,因爲它符合「可見」而不是相同的位置(結果是感興趣的項目總是滾動到列表的底部)。.NET:ListView的TopItem屬性失敗,並顯示「ShowGroups」= true
我對這個問題的解決方案是保存列表 - > TopItem的(我)「ID」,重新填充列表,然後調用列表 - > TopItem = newItemWithSameID(需要設置兩次,出於某種原因)。這可以作爲基本「未分組」列表的魅力。
但 - 如果列表中有「ShowGroups = true」,這將無法工作。屬性TopItem將始終是列表中的第一個項目,而不是文檔中所說的第一個VISIBLE項目。
有沒有解決方案?我搜索了一下,發現了另一個失去靈魂的同樣的問題。他對微軟的支持很有趣,但沒有成功。(http://social.msdn.microsoft.com/Forums/en/winforms/thread/8a81c5a6-251c-4bf9-91c5-a937b5cfe9f3)。
所以 - 我的問題是:有沒有解決方法?我真的需要將這個列表分組,當我的列表跳轉時,我真的很討厭什麼時候發生了變化。
我不會在這裏粘貼任何代碼,因爲所有需要重現的代碼都在上面的討論中。
非常感謝!
很久以前,謝謝,但我只是重新討論這個問題,你的解決方案工作。但是,如果listitem比客戶區域寬,ClientRectangle.Contains會失敗,這可能是您的問題。 所以我改變檢查第一個項目在哪裏(Items [i] .Bounds.Y> 0),無論寬度如何工作。 –