C# 带有“上一步”和“下一步”按钮的循环显示

C# 带有“上一步”和“下一步”按钮的循环显示,c#,winforms,C#,Winforms,假设我有一张清单:1 5 6 10 当我点击“下一步”时,显示的列表项已经是10。。当我单击“上一步”并且显示的列表项已经是1时,我想让用户返回到1,并以另一种方式返回到1。。我想让用户回到10。。这是我尝试过的,但我总是得到“I(contor)不能为负或大于List.Count”: public int i=0; private void nextbutton_Click(对象发送方,事件参数e) { ++一,; 如果(被汗水舔过) { 如果(SweatersList.Count!=1) 如果

假设我有一张清单:1 5 6 10

当我点击“下一步”时,显示的列表项已经是10。。当我单击“上一步”并且显示的列表项已经是1时,我想让用户返回到1,并以另一种方式返回到1。。我想让用户回到10。。这是我尝试过的,但我总是得到“I(contor)不能为负或大于List.Count”:

public int i=0;
private void nextbutton_Click(对象发送方,事件参数e)
{
++一,;
如果(被汗水舔过)
{
如果(SweatersList.Count!=1)
如果(i>=毛衣列表.计数-1)
{
i=0;
pictureBox1.Image=毛衣列表[i];
}
else pictureBox1.Image=毛衣列表[i];
}
}
private void previousbutton\单击(对象发送者,事件参数e)
{
--一,;
如果(被汗水舔过)
{
如果(SweatersList.Count!=1)
{
if(i<0)
{
i=毛衣列表。计数;
pictureBox1.Image=毛衣列表[i];
}
else pictureBox1.Image=毛衣列表[i];
}
}
}
C#中的数组或列表索引从零开始,因此范围内最大的索引比集合中的项目数少一个。因此,
SweatersList.Count
,因此
i
,在此超出范围:

i = SweatersList.Count;
pictureBox1.Image = SweatersList[i];
因此,当您想在最后一个有效索引处重新开始时,需要从
毛衣列表中减去一个。Count

i = SweatersList.Count - 1;

我不知道为什么在
if(sweaterclicked)
块之外递增和递减,但我想你是这样做的

哪些
if
s属于
else
s?第二个
if
和第一个
else
,这意味着
else
属于
if(i<0)
@EdPlunkett为您编辑了它。查看更新!感谢您的修复。是的,现在可以正常工作了,下一步按钮上还有一个添加:
if(i>=SweatersList.Count-1)
它必须是
if(i>SweatersList.Count-1)
@A.Ispas很好的捕获!
i = SweatersList.Count - 1;