C#程序崩溃(.ico文件)

时间:2010-09-20 15:35:55

标签: c# visual-studio winforms

如果同一文件夹中没有.ico文件,程序会崩溃。我有:

  1. 在“应用程序”部分添加了MyIcon.ico文件,同时选中了“使用默认设置嵌入清单”。
  2. 将.ico文件作为.ico文件属性中的嵌入式资源(构建操作)。
  3. 在公共表单中添加了this.Icon = new Icon("plat.ico");
  4. 那么......为什么应用程序无法启动?是什么给了什么?

4 个答案:

答案 0 :(得分:4)

您正在使用的constructor for Icon尝试将“plat.ico”读作文件名,而不是嵌入式资源。

如果要从资源加载图标,则需要从资源中显式获取Stream,然后将其传递给Icon的构造函数。

这可能类似于:

// Add using System.Reflection; at the top of your file...

this.Icon = new Icon(
    Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace.plat.ico")
  );

或者,您可以使用直接从资源中提取的constructor overload,而不是文件名:

this.Icon = new Icon(this.GetType(), "plat.ico");

答案 1 :(得分:1)

我在Windows窗体中遇到了同样的问题,即使它与表单位于同一目录中,也无法找到该图标。

notifyIcon1.Icon = new Icon("enabled.ico");

我在VS2010中查看了.ico文件的属性,发现复制到输出目录已设置为不复制。我将其更改为始终复制,这就是诀窍。

有时最简单的解决方案是最佳解决方案。

答案 2 :(得分:0)

您需要将图标文件的“复制到输出”设置为“始终复制”或“如果更新则复制”。

答案 3 :(得分:-1)

您正在调用错误的构造函数。只需使用:

this.Icon = new Icon(this.GetType(), "plat.ico");