C#:如何使用下一个和上一个按钮循环浏览列表视图中的项目?
背景:
假设您在列表视图中有10个项目。
在listview旁边有两个名为previos和next的按钮。
问题:
单击“下一步”和“上一步”按钮后,如何循环浏览这些列表视图项?
答案 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]