djd*_*d87 12 c# listview listviewitem .net-2.0 winforms
我有一个列表视图,我正在填充8列用户数据.用户可以选择启用自动刷新,这会导致ListView被清除并使用数据库中的最新数据重新填充.
问题是当项目被清除并重新填充时,可见区域会跳回到列表的顶部.因此,如果我正在查看2000年的第1000项,那么回到那个项目是非常不方便的.
基本上,我要问的是,如何获得当前的滚动距离(x和y),然后恢复它们?
The*_*ent 15
我只是想为那些拼命尝试使用有缺陷的ListView.TopItem属性的人提供一些信息:
当然,这会导致ListView的滚动条跳转到0并返回到顶部项目的位置,这很烦人.如果您找到此问题的解决方法,请更新此问题.
我成功使用了以下内容:
int topItemIndex = 0;
try
{
topItemIndex = listView1.TopItem.Index;
}
catch (Exception ex)
{ }
listView1.BeginUpdate();
listView1.Items.Clear();
//CODE TO FILL LISTVIEW GOES HERE
listView1.EndUpdate();
try
{
listView1.TopItem = listView1.Items[topItemIndex];
}
catch (Exception ex)
{ }
Run Code Online (Sandbox Code Playgroud)
不久前我遇到了同样的问题,我最终实现了一种算法来将模型与列表进行比较,所以我只添加/删除了已更改的元素。这样,如果没有发生重大变化,列表就不会跳到开头。我想要实现的主要目标是效率(这样列表就不会闪烁)。
| 归档时间: |
|
| 查看次数: |
9892 次 |
| 最近记录: |