在加载ImageStream时,我在下面的语句中遇到问题。
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
例外:
System.Reflection.TargetInvocationException:抛出了异常 通过调用的目标。 ---> System.InvalidOperationException:ImageList的加载没有 成功
当我浏览并看到ImageStream对象时,它为null。它抛出了与“mscorelib”相关的上述例外。
非常感谢任何建议和意见
答案 0 :(得分:0)
对不起底部的难看代码,但是我是一个基于结果的程序员,必须立即使事情正常工作。
我在InitializeComponent()上遇到运行时错误,遇到了紧急情况;它失败了,我的winforms应用程序是黑屏。
逐步执行大量代码,似乎此调用:
this.imageList1.ImageStream =((System.Windows.Forms.ImageListStreamer)(resources.GetObject(“ imageList1.ImageStream”))));
在designer.cs中,生成文件失败。
设计师无法解决任何问题。在紧急情况下,我只是在调用initializeComponent()之前手动创建了图像列表。
我确定它与winform的复杂性及其在Visual Studio IDE中的设计者有关-但由于我现在需要结果而无法证明。
因此,如果您从表格中删除图像列表,请将图像添加为“嵌入式资源”,然后手动加载图像列表。我“认为”设计师实际上并没有嵌入资源。
ilssC = new ImageList();
ilssC.ColorDepth = System.Windows.Forms.ColorDepth.Depth16Bit;
ilssC.ImageSize = new System.Drawing.Size(200, 150);
ilssC.TransparentColor = System.Drawing.Color.Transparent;
Assembly myAssembly = Assembly.GetExecutingAssembly();
Stream myStream = myAssembly.GetManifestResourceStream("SafeEnv.Resources.ssbars00.jpg");
Bitmap bmp = new Bitmap(myStream);
ilssC.Images.Add ("ssbars00.jpg",bmp);
myStream = myAssembly.GetManifestResourceStream("SafeEnv.Resources.ssbars01a.jpg");
bmp = new Bitmap(myStream);
ilssC.Images.Add ("ssbars01a.jpg",bmp);
myStream = myAssembly.GetManifestResourceStream("SafeEnv.Resources.ssbars02a.jpg");
bmp = new Bitmap(myStream);
ilssC.Images.Add ("ssbars02a.jpg", bmp);
myStream = myAssembly.GetManifestResourceStream("SafeEnv.Resources.ssbars03a.jpg");
bmp = new Bitmap(myStream);
ilssC.Images.Add ("ssbars03a.jpg", bmp);
myStream = myAssembly.GetManifestResourceStream("SafeEnv.Resources.ssbars04a.jpg");
bmp = new Bitmap(myStream);
ilssC.Images.Add ("ssbars04a.jpg", bmp);
myStream = myAssembly.GetManifestResourceStream("SafeEnv.Resources.ssbars05a.jpg");
bmp = new Bitmap(myStream);
ilssC.Images.Add ("ssbars05a.jpg", bmp);
ilssC.Images.SetKeyName (0, "ssbars00.jpg");
ilssC.Images.SetKeyName (1, "ssbars01a.jpg");
ilssC.Images.SetKeyName (2, "ssbars02a.jpg");
ilssC.Images.SetKeyName (3, "ssbars03a.jpg");
ilssC.Images.SetKeyName (4, "ssbars04a.jpg");
ilssC.Images.SetKeyName (5, "ssbars05a.jpg");
答案 1 :(得分:-1)
我不明白你为什么使用 ImageStream
我更喜欢使用
HIMAGELIST ImageList_Create(
int cx,
int cy,
UINT flags,
int cInitial,
int cGrow
);
然后您可以在加载前分配图像。