“IndexOutOfRangeException:索引位于数组之外。”发生异常

时间:2014-02-05 06:41:54

标签: c# .net winforms visual-studio-2010 runtime-error

我在设置ImageList的ImageCollection的SetKeyName方法时遇到了这个异常。

 this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
        this.imageList1.TransparentColor = System.Drawing.Color.Fuchsia;
        this.imageList1.Images.SetKeyName(0, "");
        this.imageList1.Images.SetKeyName(1, "");

我也在我的主窗体中使用了这个“imageList1.ImageStream”,它在那里工作得很好。我被困在这里,我不知道究竟是什么问题,它是如何提出的,我怎么能解决这个问题。

我们非常感谢任何建议和意见。谢谢!!

2 个答案:

答案 0 :(得分:1)

试试这个:

this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
this.imageList1.TransparentColor = System.Drawing.Color.Fuchsia;

for (int i = 0; i < this.imageList1.Images.Count; i++)
    this.imageList1.Images.SetKeyName(i, "");

答案 1 :(得分:1)

最有可能是这一行:

this.imageList1.Images.SetKeyName(1, "");

导致您的例外。当然它也可能是索引0的第一行。基本上,例外是在尝试访问给定索引处的数组时代码失败。原因是数组在该索引处没有项目。

例如,在您的情况下,代码假定数组中有2个项目。索引为0且索引为1的索引为1.如果数组只有一个项,则第二行将失败并抛出异常。

您要做的就是在尝试对其执行任何操作之前,确保在给定索引处有一个项目。

类似的东西:

if(this.imageList1.Images.Count >= 2)
{
   this.imageList1.Images.SetKeyName(1, "");
}