2012-10-04 81 views
1

我有列表视图和一些列“ID”,“产品名称”和“供应商”。我可以添加,编辑或删除这些项目,并在项目列表视图的“搞乱”后刷新这样的东西。防止项目失去焦点刷新列表视图在c#

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); 
} 

所以这种方法只是我每次刷新物品列表焦点失去的时间,这是合乎逻辑的,因为我从中删除列表中的所有项目,并重新填补它工作正常。 所以我的问题是我如何能够专注于编辑和新添加的项目,当我编辑一些项目时,我希望listview不滚动到顶部,而是留在编辑项目所在的位置。 我尝试使用方法FindItemWithText并将listview的焦点项目设置为找到的项目,但它不起作用。 这种问题有没有解决的办法?

回答

5

保存重点项目的指标变量:

int oldFocusedIndex = listView.SelectedItems[0].Index; 

后来那么你就可以执行恢复重点:

listView.Items[oldFocusedIndex].Selected = true; 

您也可以对用户可见的项目由于ListViewClear()方法:

listView.Items[oldFocusedIndex].EnsureVisible(); 
+0

但是我没有一个方法od .SelectedIndex?我无法得到这个索引。 – Milan

+0

@Milan对不起,修正了这个问题。 – AgentFire