.Net中资源文件应用的一些经验[zz]
http://www.cnblogs.com/srw962/archive/2005/04/07/132961.html
快毕业了,回顾近三年的.Net历程,整理一下以前的作品中所犯的错误,以及解决方法。
Dim a As Reflection.Assembly = Reflection.Assembly.GetExecutingAssembly
Dim b As New Bitmap(a.GetManifestResourceStream("VBResources.Clock01.bmp"))
PictureBox1.Image = b
Assembly a = Assembly.GetExecutingAssembly();
Bitmap b = new Bitmap(a.GetManifestResourceStream("CSharpResources.Clock01.bmp"));
pictureBox1.Image = b;
运行一下,问题出来了:
Assembly a = Assembly.GetExecutingAssembly();
//Bitmap b = new Bitmap(a.GetManifestResourceStream("CSharpResources.Clock01.bmp"));
//pictureBox1.Image = b;
string[] resourceNames = a.GetManifestResourceNames();
foreach(string name in resourcesNames)
{
Console.WriteLine(name);
}
运行一下,在调试环境下的输出框里可以看到:
Assembly a = Assembly.GetExecutingAssembly();
Bitmap b = new Bitmap(a.GetManifestResourceStream("CSharpResources.res.Clock01.bmp"));
pictureBox1.Image = b;
快毕业了,回顾近三年的.Net历程,整理一下以前的作品中所犯的错误,以及解决方法。
VB.Net中应用资源,设置如下图:

注意,我将所有的图片放到一个文件夹res下,这是为了使工程更有条理。
然后应用下面的代码来使用资源:
这没有问题,但是在C#中这样做就有问题了。我们来试试:
新建C#项目,设置如上面的VB.Net项目。
应用如下代码:
运行一下,问题出来了:
原来a.GetManifestResourceStream("CSharpResources.Clock01.bmp")出的错,也就是说根本没有检索到CSharpResources.Clock01.bmp这个资源,Why?!
莫非资源不是这个名字?用下面的代码试试:
运行一下,在调试环境下的输出框里可以看到:
原来资源名称是CSharpResources.res.Clock01.bmp才对!,现在修改一下代码:
运行一下,No Problem!
所以得出结论:
VB.Net中资源的名称为:项目默认命名空间.资源文件名
C#中则是:项目命名空间.资源文件所在文件夹名.资源文件名

浙公网安备 33010602011771号