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

资源文件的使用真是挺繁的,但是会用了以后就很简单了。

到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”加入工程一样,但是你的确加了,根本不知道怎么回事,就是因为你没有写命名空间或者命名空间写错误了。

你可能感兴趣的:(文件)