3

我将图像添加到我的项目资源 (Windows Mobile 6.1)。我想使用此图像来设置我在表单中拥有的一些 PictureBox 的 PictureBox.Image 属性。我尝试以下代码:

pictureBox1.Image = Properties.Resources.my_image;
pictureBox2.Image = Properties.Resources.my_image;
pictureBox3.Image = Properties.Resources.my_image;

...

pictureBoxN.Image = Properties.Resources.my_image;

问题是有时图像仅显示在某些 PictureBox 中(我TargetInvocationException在尝试设置图像时得到一个),而不是全部显示。为什么?我怎么解决这个问题?

编辑

InnerException 的 StackTrace:

在 Microsoft.AGL.Common.MISC.HandleAr(PAL_ERROR ar) 在 System.Drawing.Bitmap._InitFromMemoryStream(MemoryStream mstream) 在 System.Drawing.Bitmap..ctor(Stream stream) 在 System.Reflection.RuntimeConstructorInfo.InternalInvoke(RuntimeConstructorInfo rtci , BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfoculture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark) in System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfoculture) in System System.Resources.ResourceReader.LoadBitmap(Int32 typeIndex) 中 System.Resources.Resources.ResourceReader.CreateResource(Type objType, Type[] ctorParamTypes, Object[] ctorParameters) 中的 .Reflection.ConstructorInfo.Invoke(Object[] 参数) System.Resources .ResourceReader.LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode) in System.Resources.ResourceReader.LoadObject(Int32 pos, ResourceTypeCode& typeCode) in System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase) in System.Resources.ResourceManager.GetObject(String名称,CultureInfo 文化)在 Icons_Control.Properties.Resources.get_glass_empty() 在 Icons_Control.ListItem.set_CompletitionStatus(eCompletionStatus value) 在 Icons_Control.ListItem..ctor() 在 Icons_Control.ListItem..ctor(eItemType type) 在 Icons_Control.MainForm。 System.Windows.Forms.Menu.ProcessMnuProc(Control ctlThis, WM wm, Int32 wParam, Int32 lParam) 中 System.Windows.Forms.MenuItem.OnClick(EventArgs e) 中的 menuItem3_Click(Object sender, EventArgs e) System.Windows。 Forms.Form.WnProc(WM wm, Int32 wParam,Int32 lParam) 在 System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam) 在 Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain) 在 System.Windows.Forms.Application.Run(Form fm) ) 在 Icons_Control.Program.Main()

4

1 回答 1

2

我的猜测是您的内存或其他资源不足。图片资源有点危险。每次获得资源时,都会创建一个新资源。您可能只想创建一个 my_image 实例,并且您可能希望在使用完它后将其丢弃。

Image myImage = Properties.Resources.my_image;

pictureBox1.Image = myImage;
pictureBox2.Image = myImage;
pictureBox3.Image = myImage;
pictureBox4.Image = myImage;
...
pictureBoxN.Image = myImage;

// Later on when you are done using it
myImage.Dispose();

对于大多数 CF 应用程序来说,不浪费内存非常重要。

于 2013-01-10T16:25:29.647 回答