Csharp/C#教程:System.Drawing.Icon构造函数抛出“操作成功完成”exception分享


System.Drawing.Icon构造函数抛出“操作成功完成”exception

在Windows XP计算机上,以下代码抛出System.ComponentModel.Win32Exception,并显示消息“操作已成功完成”

System.Drawing.Icon icon = new System.Drawing.Icon("icon.ico"); 

我可以阻止程序崩溃

 try { System.Drawing.Icon icon = new System.Drawing.Icon("icon.ico"); } catch(System.ComponentModel.Win32Exception ex) { if (ex.NativeErrorCode != 0) { throw; } } 

但当然没有设置图标。

完整的堆栈跟踪是

 at System.Drawing.Icon.Initialize(Int32 width, Int32 height) at System.Drawing.Icon..ctor(String fileName, Int32 width, Int32 height) at System.Drawing.Icon..ctor(String fileName) at hermes.Window1..ctor() in D:\projects\hermesclient\hermesWPF\hermes\Window1.xaml.cs:line 50" 

第50行是我发布的原始行。

这是一个WPF应用程序,在Windows 7机器上,代码工作正常。

编辑:原来这个图标在Windows XP中根本不起作用,添加256色版本似乎已经修复了它。

从它的外观来看,问题似乎是没有正确处理对象的问题。 很难准确指出您的案例中出现问题的位置,但作为一般经验法则,确保在处理实现IDisposable对象时实现using指令。

即使在您提供的示例中也尝试执行以下操作:

 using (var icon = new System.Drawing.Icon("icon.ico")) { // use icon } // icon is then disposed. 

阅读本文 。

文件icon1.ico是否与.NET可执行文件存在于同一目录中? 您没有明确说明……您是否将此作为外部图标文件阅读? 或许这个

  string sPath2Icon = Path.Combine(Environment.CurrentDirectory,“icon1.ico”);  using(System.Drawing.Icon icon = new System.Drawing.Icon(sPath2Icon)){      //做与图标有关的事情!  } 

希望这会有所帮助,最好的问候,汤姆。

原来这个图标在Windows XP中根本不起作用,添加256色的版本似乎已经修复了它。

我有类似的问题。 在我的例子中,图标文件是一个包含32×32,48×48和256×256大小图标的multiicon文件。 我将其更改为单个图标文件大小32×32,之后它工作正常。

上述就是C#学习教程:System.Drawing.Icon构造函数抛出“操作成功完成”exception分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1016044.html

(0)
上一篇 2021年12月31日
下一篇 2021年12月31日

精彩推荐