我有列表视图和一些列"ID","产品名称"和"供应商".我可以添加,编辑或删除这些项目,并在"弄乱"项目列表视图后刷新这样的东西.
listView.Items.Clear();
foreach (var item in result)
{
ListViewItem lv = new ListViewItem(item.ID.ToString());
lv.SubItems.Add(item.Name.ToString());
lv.SubItems.Add(item.Vendor.ToString());
listView.Items.Add(lv);
}
Run Code Online (Sandbox Code Playgroud)
所以这个方法工作正常,除非每次刷新列表焦点的项目丢失,这是合乎逻辑的,因为我从列表中删除了所有项目并再次填充它.所以我的问题是我如何能够专注于编辑和新添加的项目,主要是当我编辑一些项目时,我希望listview不要滚动到顶部,而是留在编辑项目所在的位置.我尝试使用方法FindItemWithText,而不是将listview的焦点项设置为找到的项,但它不起作用.这种问题有解决办法吗?
将焦点项的索引保存到变量:
int oldFocusedIndex = listView.SelectedItems[0].Index;
Run Code Online (Sandbox Code Playgroud)
稍后您可以恢复焦点执行:
listView.Items[oldFocusedIndex].Selected = true;
Run Code Online (Sandbox Code Playgroud)
您还可以使该项对用户可见,因为ListView该Clear()方法后滚动条将保留在顶部:
listView.Items[oldFocusedIndex].EnsureVisible();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2002 次 |
| 最近记录: |