this.imageList1.Images.SetKeyName 报错

jxfzcgh 2010-11-12 01:04:16
以下设计器代码总是报错,
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的图标是存储在什么地方?

...全文
472 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxfzcgh 2010-11-12
  • 打赏
  • 举报
回复
imageList里面的图片本来就是在窗体设计器中直接加载的,不是我改动了代码

不过问题莫名其妙解决了,不知为何,解决方法如下:
1、现在窗体代码文件中的 Form1类中最顶上随便加一个类,如下
public partial class Form1
{
public class someclass
{
}
}
2、编译,报错
3、再去掉刚才加的代码,再编译,OK
colorall 2010-11-12
  • 打赏
  • 举报
回复
imageList1集合里图片总数就6个
添加这一行肯定会索引越界
this.imageList1.Images.SetKeyName(6, "11.ico");


imageList1的图标是存储在资源文件里,只要在Image(Collection)添加图片就行
不要直接改动设计器自动生成的代码,不理解他的结构很容易改错的。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧