2012-09-21 42 views
3

在VS的.Net框架2. 2010 SP 1我创建的WinForms应用程序,我尝试从资源获取的图标并将其分配给形成图标奇怪的问题从VS设计师加入Resources.resx图标资源icon_gray.ico在我的开发PC的Windows 7 x86平台上的.NET Framework 3.5 SP1中,和.NET 4在.NET资源2

,但得到的Windows XP SP 3 with only .NET Framework 2 SP 2

错误提示以下错误:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ComponentModel.Win32Exception: Параметр задан неверно 
    at System.Drawing.Icon.Initialize(Int32 width, Int32 height) 
    at System.Drawing.Icon..ctor(SerializationInfo info, StreamingContext context) 
    --- End of inner exception stack trace --- 
    at System.RuntimeMethodHandle._SerializationInvoke(Object target, SignatureStruct& declaringTypeSig, SerializationInfo info, StreamingContext context) 
    at System.Reflection.RuntimeConstructorInfo.SerializationInvoke(Object target, SerializationInfo info, StreamingContext context) 
    at System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context) 
    at System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder) 
    at System.Runtime.Serialization.ObjectManager.DoFixups() 
    at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) 
    at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) 
    at System.Resources.ResourceReader.DeserializeObject(Int32 typeIndex) 
    at System.Resources.ResourceReader.LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode) 
    at System.Resources.ResourceReader.LoadObject(Int32 pos, ResourceTypeCode& typeCode) 
    at System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase, Boolean isString) 
    at System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase) 
    at System.Resources.ResourceManager.GetObject(String name, CultureInfo culture, Boolean wrapUnmanagedMemStream) 
    at System.Resources.ResourceManager.GetObject(String name, CultureInfo culture) 
    at tester.Properties.Resources.get_icon_gray() 
    at tester.Form1.button1_Click(Object sender, EventArgs e) 
    at System.Windows.Forms.Control.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) 
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ButtonBase.WndProc(Message& m) 
    at System.Windows.Forms.Button.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 

如何解决这个问题? 编辑: 同巴:

pictureBox1.Image = global::tester.Properties.Resources.icon_gray1; 

一切都很好

+0

请翻译俄文留言 – Migol

+0

什么样的解析是你的图标? “参数不正确”的错误类型指向错误的参数传递到'System.Drawing.Icon.Initialize'并且图标无法被加载/解析的问题。我不知道真正的答案,但这个问题很可能不同* XP文件处理XP和后Windows XP系统。尝试使用* .png文件重现相同的问题。如果有效,那么ICO的处理确实是问题所在。查看[this](http://en.wikipedia.org/wiki/ICO_%28file_format%29#History)了解详情。 –

+0

@Molol:http://translate.google.com/#ru/en/%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1% 80%20%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%20%D0%BD%D0%B5%D0%B2%D0%B5%D1%80%D0%BD% D0%BE –

回答

0

对于那些谁也遇到这个问题,请务必检查在项目属性窗口中的图标,也,图标财产所有你的形式。他们都必须是32x32才能在Windows XP中工作。