C#:如何使用下一个和上一个按钮循环浏览列表视图中的项目?

时间:2008-11-14 00:28:01

标签: c#

C#:如何使用下一个和上一个按钮循环浏览列表视图中的项目?

背景:

假设您在列表视图中有10个项目。

在listview旁边有两个名为previos和next的按钮。

问题:

单击“下一步”和“上一步”按钮后,如何循环浏览这些列表视图项?

7 个答案:

答案 0 :(得分:1)

如果您只想选择下一个项目(所以选择项目a,b,c,从选择的b到c),您可以这样做:

        if (listView.SelectedIndices.Count > 0)
        {
            int oldSelection = listView.SelectedIndices[0];
            listView.SelectedIndices.Clear();

            if (oldSelection + 1 >= listView.Items.Count)
                listView.SelectedIndices.Add(0);
            else
                listView.SelectedIndices.Add(oldSelection + 1);
        }

答案 1 :(得分:0)

我想你是说要实现分页?

如果是这样,只需在索引中保留当前页码的记录,并在单击下一个按钮时,递增页码,检索该页面的记录并将其绑定到列表中。

如果您实现数据提供程序等,则有一种自动执行此操作的方法。检查ListView上的文档,了解如何完成此操作。您需要为按钮指定一个特殊的“操作”才能使其正常工作。

欲了解更多信息: http://msdn.microsoft.com/en-us/library/bb515102.aspx

答案 2 :(得分:0)

int oldSelection = ListView1.SelectedIndices[0];

if(*NextOptionSelected* && oldSelection + 1 < ListView1.Items.Count)
{
     ListView1.Items[oldSelection + 1].Selected = true;
     ListView1.Items[oldSelection + 1].Focused = true;
     ListView1.Items[oldSelection].Selected = false;
     ListView1.Items[oldSelection].Focused = false;
}
else if(*LastOptionSelected* && oldSelection > 0)
{
     ListView1.Items[oldSelection - 1].Selected = true;
     ListView1.Items[oldSelection - 1].Focused = true;
     ListView1.Items[oldSelection].Selected = false;
     ListView1.Items[oldSelection].Focused = false;
}

ListView1.EnsureVisible(ListView1.SelectedIndices[0]);

答案 3 :(得分:0)

//UpOrDown is a +1 or -1
void Page(int UpOrDown){
    //Determine if something is selected
    if (listView.SelectedIndices.Count > 0)
        {
            int oldIndex = listView.SelectedIndices(0);
            listView.SelectedIndices.Clear();

            //Use mod!
            int numberOfItems = listView.Items.Count();
            listView.SelectedIndices.Add((oldIndex + UpOrDown) % numberOfItems)
        }
}

使用modulus分区,我觉得人们已经忘记了这个人

答案 4 :(得分:0)

为下一个+1和prev数据为-1 这是代码: -

Dim CurrentRow As Integer
CurrentRow = Form2.ListView1.Items.IndexOf(Form2.ListView1.FocusedItem)
CurrentRow =CurrentRow + 1
Form2.ListView1.Items(CurrentRow).Selected = True
Form2.ListView1.Items(CurrentRow).Focused = True

这是移动到listview中下一行的vb代码 1.将listview控件添加到表单中 2.添加一个按钮进行表单 3.双击该按钮并右键单击上面的代码

答案 5 :(得分:0)

使用Page方法测试的方法,null / out of index range-proof:

private void Page(int UpOrDown, ListView list)
        {
            //Determine if something is selected
            list.Focus();
            if (list.SelectedIndices.Count == 0)
            {
                if (list.Items.Count > 0)
                {
                    list.Items[0].Selected = true;
                    list.SelectedIndices.Add(0);
                    list.Items[0].Focused = true;
                    list.EnsureVisible(list.Items[0].Index);
                    list.TopItem = list.Items[0];
                }
            }
            if (list.SelectedIndices.Count > 0)
            {
                if (list.SelectedIndices[0] == null)
                {
                    list.SelectedIndices.Add(0);
                }
                int oldIndex = list.SelectedIndices[0];
                list.SelectedIndices.Clear();

                //Use mod!
                int numberOfItems = list.Items.Count;
                if (oldIndex + UpOrDown >= 0 && oldIndex + UpOrDown <= list.Items.Count-1)
                {
                    list.SelectedIndices.Add((oldIndex + UpOrDown)%numberOfItems);
                    list.SelectedItems[0].Selected = true;
                    list.SelectedItems[0].Focused = true;
                    list.EnsureVisible(list.SelectedItems[0].Index);
                    //list.TopItem = list.SelectedItems[0];
                }
            }
        }

答案 6 :(得分:-1)

如果不进行测试,我猜这会起作用:

 for(int i=0;i<listView.Items.Count;i++)
      listView.Items[i]