打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C# 资源文件(二)
    在新建的Windows项目中,一般自动生成两个资源文件:Form1.resx和Resources.resx。其中,Form1.resx在项目的根文件夹下,Resources.resx在Properties子文件夹下。这两个资源文件的使用方法是不一样的,因为对Form1.resx的访问需要构造Syste.Resources.ResourceManager对象,而访问Resources.resx里的资源可以直接使用Properties.Resources.resName(resName是你添加的资源的名称)。
访问Form1.resx
    ResourceManager rm = new ResourceManager(typeof(Form1));//创建ResourceManager对象
    string stringResource =rm.GetString("resName"); //根据资源的名称获取字符串资源
    Image imageResource = (Image)rm.GetObject("resName");//根据资源名称获取资源,并转型
   在Form1.Designer.cs窗体设计器生成的代码中,可以看到这样的代码:
   
//只有向窗体上添加图标、图像等资源后,才会自动生成下面的代码。
   ComponentResourceManager resources= new ComponentResourceManager(typeof(Form1));
    this.Icon =((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
   从代码可以看出,c#将窗体的图标文件作为资源进行保存了起来,然后利用ComponentResourceManager来获取这些资源。它和ResourceManager用法一样,System.ComponentModel.ComponentResourceManager继承自
Syste.Resources.ResourceManager
访问Resources.resx
   Resources.resx文件位于Properties子文件夹下,在此文件夹中还存在一个Resources.Designer.cs文件,该文件中的代码都是由设计器自动生成的:
namespaceRootNameSpace.Properties {
    ......
    internal class Resources {
       private staticglobal::System.Resources.ResourceManager resourceMan;
       private staticglobal::System.Globalization.CultureInfo resourceCulture;

       //返回此类使用的缓存 ResourceManager实例。       
       internal staticglobal::System.Resources.ResourceManager ResourceManager{
           get {
               if (object.ReferenceEquals(resourceMan,null)) {
                   global::System.Resources.ResourceManagertemp = newglobal::System.Resources.ResourceManager("RootNameSpace.Properties.Resources",typeof(Resources).Assembly);
                   resourceMan = temp;
               }
               returnresourceMan;
           }
       }
       //添加的资源将以属性的形式返回
       internal staticSystem.Drawing.BitmapresName {
           get {
               object obj =ResourceManager.GetObject("resName", resourceCulture);
               return((System.Drawing.Bitmap)(obj));
           }
       }
       ......
    }
}
   可以看出,设计器自动为我们包装好了这些资源,在默认的RootNameSpace命名空间(也即你的项目所在的命名空间)下生成RootNameSpace.Properties子空间,并自动产生Resources类。所以,我们可以方便的以属性的形式来获取这些资源,Propperties.Resources.resName;也可以属性的形式获得ResourceManager来获取资源,Properties.Resources.ResourceManager.GetObject("resName")。
   不仅在Properties文件夹下可以建立资源文件,也可以在任何地方创建资源文件。在建立名称为MyResource资源文件的同时,设计器会自动生成两个文件:MyResource.resx和MyResource.Designer.cs。其中后一个文件就包装了设计器自动生成的代码,以方便对资源文件的访问。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
在.NET中读取嵌入和使用资源文件的方法
C#资源文件的使用方法
.NET的资源并不限于.resx文件,你可以采用任意存储形式[上篇]
ASP.NET 中使用资源文件 - 林子之大.net笔记 - 博客园
C# 嵌入式资源
vs2010 c# 资源文件 在 国际化 (WinForm)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服