C# imagelist的索引为-1,这是一个创建异常的值

C# imagelist的索引为-1,这是一个创建异常的值,c#,indexing,imagelist,C#,Indexing,Imagelist,你好,我正在用c#制作一个图像查看器。问题是它工作正常,我可以看到点击下一个图像 但是对于值=5和=-1,我遇到了一个例外 我的代码是什么 我收到这个消息 InvalidArgument=值'-1'对'index'无效 代码: 此图像列表有4张带+的图片,上升到第四张,然后根据上面的代码下降到第一张 当我再次按下按钮时,会显示一条错误消息,说明如何修复此问题?这将使我保持在范围内: I = I - 1; I = I < 0 ? 0 : I >= imageList2.Images.L

你好,我正在用c#制作一个图像查看器。问题是它工作正常,我可以看到点击下一个图像

但是对于
值=5和=-1,我遇到了一个例外

我的代码是什么

我收到这个消息

InvalidArgument=值'-1'对'index'无效

代码:

此图像列表有4张带+的图片,上升到第四张,然后根据上面的代码下降到第一张

当我再次按下按钮时,会显示一条错误消息,说明如何修复此问题?

这将使我保持在范围内:

I = I - 1;
I = I < 0 ? 0 : I >= imageList2.Images.Length ? imageList2.Images.Length - 1 : I;
I=I-1;
I=I<0?0:I>=imageList2.Images.Length?imageList2.Images.Length-1:I;

如果你还不想效仿亚历山德罗的例子,你可以尝试老式的If/else If

if(I<0)
  I=4;
else if(I>4)
  I=0;
if(I4)
I=0;

您只需在I值更改后插入该代码。

如何修复它取决于您自己-异常非常明确,足以说明索引无效,因此您可以根据程序的设计将索引保持在有效范围内。一种解决方案是将范围外的值视为有效范围内的最低/最高值……对于一个普通的编码器来说似乎很难把握:也许吧,但这是我目前能做的最好的了;如果(I<0)I=0和下一个图像按钮:
I=I+1;如果(I>imageList2.Images.Length-1)I=imageList2.Images.Length-1
对于
长度更好,但更喜欢缩短版本。您可以通过:I+=1;I%=图像计数;请参阅%->称我为老式,我发现if/else更容易阅读。
if(I<0)
  I=4;
else if(I>4)
  I=0;