如果同一文件夹中没有.ico文件,程序会崩溃。我有:
this.Icon = new Icon("plat.ico");
。 那么......为什么应用程序无法启动?是什么给了什么?
答案 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");