我在设置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”,它在那里工作得很好。我被困在这里,我不知道究竟是什么问题,它是如何提出的,我怎么能解决这个问题。
我们非常感谢任何建议和意见。谢谢!!
答案 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, "");
}