以下设计器代码总是报错,
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
this.imageList1.Images.SetKeyName(0, "19.ico");
this.imageList1.Images.SetKeyName(1, "page_excel.ico");
this.imageList1.Images.SetKeyName(2, "icon2_071.ico");
this.imageList1.Images.SetKeyName(3, "icon2_038.ico");
this.imageList1.Images.SetKeyName(4, "icon2_023.ico");
this.imageList1.Images.SetKeyName(5, "刷新2.ico");
this.imageList1.Images.SetKeyName(6, "11.ico");        //这一句报错,这个图标是后来新添加的错误提示数组超出索引,应该是最后图标没有加入进去,但是我在VS IDE中确实已经加入图标,且绑定到按钮
能显示,运行就不行为什么另外 imageList的图标是存储在什么地方?

解决方案 »

  1.   

    imageList1集合里图片总数就6个
    添加这一行肯定会索引越界
    this.imageList1.Images.SetKeyName(6, "11.ico");
    imageList1的图标是存储在资源文件里,只要在Image(Collection)添加图片就行
    不要直接改动设计器自动生成的代码,不理解他的结构很容易改错的。
      

  2.   

    imageList里面的图片本来就是在窗体设计器中直接加载的,不是我改动了代码不过问题莫名其妙解决了,不知为何,解决方法如下:
    1、现在窗体代码文件中的 Form1类中最顶上随便加一个类,如下
    public partial class Form1
    {
        public class someclass
        {
        }
    }
    2、编译,报错
    3、再去掉刚才加的代码,再编译,OK