2013-04-24 60 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

相关问题