您的位置:首页 > 其它

使用资源文件要注意的一些地方

2006-01-11 16:05 411 查看
资源文件的使用真是挺繁的,但是会用了以后就很简单了。

到CSDN搜索一下,里面有一篇文章,介绍了资源文件的创建和使用,一开始没有弄清楚,

原来是这么回事。

首先,你必须把要使用的资源文件编译到资源文件中,这个资源文件是控制台应用程序产生的,不是添加的name.resx文件。

using System ;
using System.Drawing ;
using System.Resources ;

namespace Resources
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//

ResourceWriter rw = new ResourceWriter ( "Image.resources" ) ;

Image canceloff = Image.FromFile (@"E:\源码\myWebControl\myWebControl\IMG\link.gif") ;
Image canceloff1 = Image.FromFile (@"E:\源码\myWebControl\myWebControl\IMG\haozhan.gif") ;
Image canceloff2 = Image.FromFile (@"E:\源码\myWebControl\myWebControl\IMG\ejobshow.gif") ;

rw.AddResource ( "link.gif" , canceloff ) ;
rw.AddResource ( "haozhan.gif" , canceloff1 ) ;
rw.AddResource ( "ejobshow.gif" , canceloff2 ) ;

rw.Generate ( ) ;
rw.Close ( ) ;
}
}
}

把上面的程序编译,执行exe文件后就得到了Image.resources文件,你可以打开看看,里面都是二进制代码。

把这个Image.resources添加到你要使用这些图片的工程中,确定加入以后文件Image.resources属性的“生成操作”是“嵌入的资源”,

然后就可以使用了,在需要使用的地方添加以下的代码:

ResourceManager rm=new ResourceManager("myWebControl.Image",Assembly.GetExecutingAssembly());
System.Drawing.Image img1=(System.Drawing.Image)rm.GetObject("link.gif");

注意:new ResourceManager的参数"myWebControl.Image" 有点麻烦:
myWebControl是你当前程序的命名空间(这里不是生成这个资源文件的命名空间,我没有注意,这里搞了好一会,没有理解好),Image是资源文件名,

特别要注意的是,一定要把命名空间写上,不然会有错误,这个也花了好长时间,因为msdn里面没有清楚讲解这个参数怎么写,一般都直接写个Image,所以有错误:
System.Resources.MissingManifestResourceException: 未能在给定的程序集中找到任何适合于指定的区域性(或非特定区域性)的资源。请确保已将“Image.resources”正确嵌入或链接到程序集“myWebControl”。 baseName: Image locationInfo: <null> resource file name: Image.resources assembly: myWebControl, Version=2.0.0.2, Culture=neutral, PublicKeyToken=null

你看这个错误提示:请确保已将“Image.resources”正确嵌入或链接到程序集“myWebControl”。
好象告诉你没有把“Image.resources”加入工程一样,但是你的确加了,根本不知道怎么回事,就是因为你没有写命名空间或者命名空间写错误了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: