2012-10-04 119 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