2013-04-24 37 views
6

我的應用程序使用Q和A鍵移動到ObjectListView中的下一個項目,只要用戶不使用某個列標題對列表項目進行排序。如果用戶已排序,則按Q/A鍵會導致列表在列表項目周圍跳轉,因爲它似乎使用原始順序,而不是當前順序。獲取ObjectListView中的下一個/上一個項目

因此,我正在尋找一種解決方案,即使在用戶排序後,用戶也可以移動到下一個項目。我現在擁有的代碼(僅適用於A鍵)如下:

if (e.KeyCode == Keys.A) 
{ 
    OLVListItem next = listSession.GetNextItem(listSession.SelectedItem); 
    if (next == null) 
    { 
    return; 
    } 

    listSession.SelectedObject = (Session)next.RowObject; 
    listSession.EnsureModelVisible((Session)next.RowObject); 
} 
+0

我得到了同樣的問題在這裏..而且,如何在GetNextItem當項目進行分組.. – 2013-04-24 09:23:06

+0

有是一些引用項目索引的方法,這取決於像GetNthItemInDisplayOrder()和GetDisplayOrderOfItemIndex()這樣的顯示順序,但是我沒有設法找到一個可行的解決方法。 – 2013-04-24 11:07:44

回答

3

這似乎正常工作,例如,下井顯示的項目:

int index = listSession.GetDisplayOrderOfItemIndex(listSession.SelectedItem.Index); 
OLVListItem next = listSession.GetNthItemInDisplayOrder(index + 1); 

,並去了顯示的項目:

int index = listSession.GetDisplayOrderOfItemIndex(listSession.SelectedItem.Index); 
OLVListItem next = listSession.GetNthItemInDisplayOrder(index - 1); 
+0

這對於TreeListView不太適用,因爲下去可能意味着跳出當前父項。如果在那個方向上沒有更多的兄弟姐妹,我會想要返回null或-1。 – 2016-08-16 16:07:02

相關問題