I am trying to get a list scrolled at the initial point after an action whose result is the removal of all items and repopulation.

I wanted to get the scroll position recorded and then set back to it but GetScrollPos always returns 0 for some reason.

I have been looking over all the ListCtrl methods but can't seem to find a way and also noticed GetScrollPos is not there but neither does it raise an exception.

有帮助吗?

解决方案

I got it to work by calculating the bottom item and using EnsureVisible on the one above it since EnsureVisible always shows an extra item underneath the targeted one if there is any.

Works perfectly and no need for GetScrollPos since I'm pretty sure there is no SetScrollPos.

list_total  = list.GetItemCount()
list_top    = list.GetTopItem()
list_pp     = list.GetCountPerPage()
list_bottom = min(list_top + list_pp, list_total - 1)
list.EnsureVisible((list_bottom - 1))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top