返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#使用Resources资源文件
  • 284
分享到

C#使用Resources资源文件

2024-04-02 19:04:59 284人浏览 泡泡鱼
摘要

一、创建资源文件 可以将字符串、图像或对象数据等资源包含在资源文件中,方便应用程序使用。 创建资源文件的方法: 1、手动或使用IDE工具自动生成XML 资源 (.resx) 文件。(

一、创建资源文件

可以将字符串、图像或对象数据等资源包含在资源文件中,方便应用程序使用。

创建资源文件的方法:

1、手动或使用IDE工具自动生成XML 资源 (.resx) 文件。(推荐)

创建一个包含字符串、图像或对象数据的 XML 资源 (.resx) 文件。

使用 Visual Studio 创建一个资源文件并将其包含在项目中。

Visual Studio 提供一个资源编辑器,借助该编辑器,可添加、删除和修改资源。 编译时,资源文件会自动转换成二进制 .resources 文件,并嵌入应用程序程序集或附属程序集中。

注意:内部使用资源文件生成器 (Resgen.exe) 将文本文件转换成二进制资源 (.resources) 文件。 然后使用语言编译器将这个二进制资源文件嵌入可执行应用程序或应用程序库,或者使用程序集链接器 (Al.exe) 将这个二进制资源文件嵌入附属程序集。

2、以编程方式创建一个 XML 资源 (.resx) 文件。 使用ResXResourceWriter类

可以创建一个 .resx 文件、枚举其资源并按名称检索特定资源。

ResXResourceWriter rw = new ResXResourceWriter("Demo.rex");
rw.AddResource("LoGo", Image.FromFile("logo.jpg");
rw.AddResource("Title", "Proce C#");
rw.Generate();
rw.Close();

二、使用ResourceManager读取项目中资源文件

资源文件调用方法 
(1).txt 文件:不可以直接调用,得先将其转换成 .resources 文件才能使用。 
(2).resx 文件:可以用 ResXResourceReader 来做读取,但是这种方法不直观,不推荐直接调用 .resx 文件。正确的方法是将其转换成 .resources 文件,然后用 ResourceManager 作读取工作。 
注意如果是在 VS.NET 中添加的 .resx 文件,那么它们自动被设为 Embedded Resource,转成 .resources 文件后被嵌入到 Assembly 中。 

(3).resources 文件分成两种情况: 

  • 1、被嵌入或编译成 Satellite Assembly:使用ResourceManager来获得在 Assembly 中的资源。 
  • 2、单独文件,没被编译或嵌入到Assembly:使用ResourceManager.CreateFileBasedResourceManager来获得资源集(ResourceSet)。

在新建的windows项目中,一般自动生成两个资源文件:FORM1.resx和Resources.resx。其中,Form1.resx附属Form1窗体,Resources.resx在项目Properties子文件夹下。

下面我们看看读取项目中资源文件

1、强类型读取项目中resx资源文件。

1、创建一个项目的默认资源文件。

2、在项目“Properties”目录下,可以看到Resources.resx。

3、添加相关的资源。

4、可以看到系统自动生成的强类型类。

使用强类型可直接使用类

logo.Image = ZS.MouldManagement.Properties.Resources._0

不仅在Properties文件夹下可以建立资源文件,也可以在任何地方创建资源文件。在建立名称为MyResource资源文件的同时,设计器会自动生成两个文件:MyResource.resx和MyResource.Designer.cs。其中后一个文件就包装了设计器自动生成的代码,以方便对资源文件的强类型访问。

强类型访问代码:

ZS.MouldManagement.Mould._333

2、使用代码读取项目中不同文化的resx资源文件

ResourceManager 可以根据不同的 UICulture 设置返回不同的本地资源,我们只需知道调用资源用到它就可以了。

winform使用资源文件(ZS.MouldManagement.resx;ZS.MouldManagement.en-us.rex等等)

//多语言
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-us");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-us");

Assembly asm = Assembly.GetExecutingAssembly();
ResourceManager rm = new ResourceManager("ZS.MouldManagement.Properties.Resources", asm);
//ZS.MouldManagement是你程序的命名空间,ZS.MouldManagement.Properties 是资源类Resources的命名空间, 资源文件名称不带扩展名
this.logo.Image = (Image)rm.GetObject("Logo");//Get**方法具有重载方法,第二个参数为CultureInfo对象
this.Title.Text = rm.GetString("Title");    //资源文件名称不带扩展名

三、Windows项目中的窗体资源文件

因为对Form1.resx的访问需要构造Syste.Resources.ResourceManager对象,而访问Resources.resx里的资源可以直接使用Properties.Resources.resName(resName是你添加的资源的名称)。 
只有向窗体上添加图标、图像等资源后

会在窗体设计器Form1.Designer.cs自动生成下面的代码

ComponentResourceManager resources = new ComponentResourceManager(typeof(Form1));//创建ResourceManager对象
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));//根据资源的名称获取字符串资源
  
this.Item1.Image = global::ZS.MouldManagement.Properties.Resources._0; //访问项目中的资源

从代码可以看出,c#将窗体的图标文件作为资源进行保存了起来,然后利用ComponentResourceManager来获取这些资源。

它和ResourceManager用法一样,System.ComponentModel.ComponentResourceManager继承自Syste.Resources.ResourceManager。

使用ComponentResourceManager类进行界面多语言切换

Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN");

ComponentResourceManager resources = new ComponentResourceManager(typeof(Form1));
resources.ApplyResources(this, "$this");
AppLang(form, resources);

#region AppLang for control
/// <summary>
/// 遍历窗体所有控件,针对其设置当前界面语言
/// </summary>
/// <param name="control"></param>
/// <param name="resources"></param>
private static void AppLang(Control control, System.ComponentModel.ComponentResourceManager resources)
{
    if (control is MenuStrip)
    {
        resources.ApplyResources(control, control.Name);
        MenuStrip ms = (MenuStrip)control;
        if (ms.Items.Count > 0)
        {
            foreach (ToolStripMenuItem c in ms.Items)
            {
                AppLang(c, resources);
            }
        }
    }

    foreach (Control c in control.Controls)
    {
        resources.ApplyResources(c, c.Name);
        AppLang(c, resources);
    }
}
#endregion

#region AppLang for menuitem
/// <summary>
/// 遍历菜单
/// </summary>
/// <param name="item"></param>
/// <param name="resources"></param>
private static void AppLang(ToolStripMenuItem item, System.ComponentModel.ComponentResourceManager resources)
{
    if (item is ToolStripMenuItem)
    {
        resources.ApplyResources(item, item.Name);
        ToolStripMenuItem tsmi = (ToolStripMenuItem)item;
        if (tsmi.DropDownItems.Count > 0)
        {
            foreach (ToolStripMenuItem c in tsmi.DropDownItems)
            {
                AppLang(c, resources);
            }
        }
    }
}
#endregion

四、使用Assembly.GetManifestResourceStream()从此程序集加载指定的文件。

当直接嵌入一资源时,也就是说,不通过一个资源文件而直接将一资源(比如图片)嵌入到 Assembly 中。这可以在 VS.net 中通过设置一文件的 Build 属性为“嵌入的资源” 实现。

在这种情况下 ResourceManager 就没有用了,因为它只能获取 .resources 资源文件。那么如何调用这类的资源呢?我们只要了解一些 System.Reflection.Assembly 这个类中的一些函数就可以了。

有三个相关函数,不过我们只需要 Assembly.GetManifestResourceStream 这个函数。这个函数将一嵌入到 Assembly 中的资源以 stream 的方式返回,而我们可以将这个 stream 转成在 .NET 中可用的对象。

比如,如果嵌入资源是一图片,那么我们可以利用 new Bitmap(Stream) 这个构造方法获得这个图片资源的 Bitmap 对象。

1、将本地要加入的资源文本(视频,图片,文本或其它)加入项目。比如我们现在加入一个up.bmp的图片到项目中,且放在文件夹Resources下面, 
2、将up.bmp右键选择“属性”的“生成操作”设置为"嵌入的资源"。

注意:访问资源的名称规则为:项目命名空间.资源文件所在文件夹名.资源文件名

Assembly aSSM = Assembly.getGetExecutingAssembly();
Stream stream = assm.GetManifestResourceStream("CreateDatabase.Resources.aa.txt");
//读取流
//文本
System.IO.StreamReader sr = new System.IO.StreamReader(stream);
string str = sr.ReadToEnd();
//XML文件
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(stream);
//图片
Image img = Image.FromStream(stream);

到此这篇关于C#使用Resources资源文件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#使用Resources资源文件

本文链接: https://lsjlt.com/news/151446.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#使用Resources资源文件
    一、创建资源文件 可以将字符串、图像或对象数据等资源包含在资源文件中,方便应用程序使用。 创建资源文件的方法: 1、手动或使用IDE工具自动生成XML 资源 (.resx) 文件。(...
    99+
    2024-04-02
  • C#如何使用Resources资源文件
    这篇文章主要讲解了“C#如何使用Resources资源文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#如何使用Resources资源文件”吧!一、创建资源文件可以将字符串、图像或对象数...
    99+
    2023-07-02
  • Java读取resources下的文件及资源路径
    Java读取resources下的文件及资源路径 在Java开发中,经常需要读取项目中resources目录下的文件或获取资源路径。本文将介绍如何在Java中读取resources下的文件,并提供相关...
    99+
    2023-08-31
    java 前端 数据库
  • C#如何给新建的winform程序添加资源文件夹Resources
    目录给新建的winform程序添加资源文件夹ResourcesC#调用Resources里的资源给新建的winform程序添加资源文件夹Resources 小菜鸟开始学习WinFor...
    99+
    2024-04-02
  • Springboot获取jar包中resources资源目录下的文件
    阿萨斯多问题现象:         今天在项目中遇到一个业务场景,需要用到resources资源目录下的文件,然后就在思考一个问题:         当项目打成jar后,Springboot要如何获取resources资源目录下的文件呢? ...
    99+
    2023-09-20
    spring boot spring java
  • .NetCore静态文件资源的使用
    介绍 静态文件都存储在Core Web根目录中。默认目录是<content_root>/wwwroot,但可通过 UseWebRoot方法更改访问目录。而content_...
    99+
    2024-04-02
  • C#中怎么读取资源文件
    C#中怎么读取资源文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C#读取资源文件概述资源文件很早就有了,在.NET时代里这个东西也不算稀奇,在进行多国语言化的时候通常把...
    99+
    2023-06-17
  • Java读取resources中资源文件路径以及jar中文件无法读取的解决
    目录Java读取resources中资源文件路径以及jar中文件无法读取的解决问题描述前言1、本地运行读取资源文件2、读取jar包中的文件信息聊聊Java项目读取resources资...
    99+
    2023-05-20
    Java读取resources Java读取resources文件路径 jar文件无法读取
  • 使用SpringBoot获取resources文件路径
    目录获取resources文件路径背景解决方案获取resource下文件夹路径的坑前提是maven项目的pom文件里面配置了这是后来我修改后的正常打包情况获取resources文件路...
    99+
    2024-04-02
  • Java读取resources中资源文件路径以及jar中文件无法读取如何解决
    今天小编给大家分享的是Java读取resources中资源文件路径以及jar中文件无法读取如何解决,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。Java读取resources中资源文...
    99+
    2023-07-06
  • Android 原始资源文件的使用详解
    背景知识介绍与其他平台的应用程序一样,Android中的应用程序也会使用各种资源,比如图片,字串等,会把它们放入源码的相应文件夹下面,如/res/drawable, /res/...
    99+
    2022-06-06
    源文件 Android
  • android开发教程之系统资源的使用方法 android资源文件
    一、颜色资源1、颜色XML文件格式 代码如下:<xml version="1.0" encoding="utf-8"><resources> //res...
    99+
    2022-06-06
    程之 源文件 方法 系统 android开发 教程 Android
  • VB.NET资源文件LoadResData怎么用
    这篇文章给大家分享的是有关VB.NET资源文件LoadResData怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。VB.NET资源文件语法:LoadResData(index, format)VB...
    99+
    2023-06-17
  • PyQt5编程扩展之资源文件如何使用
    本文小编为大家详细介绍“PyQt5编程扩展之资源文件如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“PyQt5编程扩展之资源文件如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。本例运行效果:&nbs...
    99+
    2023-07-05
  • Android字符串资源文件format方法使用实例
    很多时候我们感性Google在设计Android时遵守了大量MVC架构方式,可以让写公共代码、美工和具体逻辑开发人员独立出来。有关Android 的资源文件values/str...
    99+
    2022-06-06
    format Android
  • unity 如何使用文件流读取streamingassets下的资源
    目的:读取streamingassets下的文件中指定的一段字节 已知:文件中的起始位置,和需要读取的长度 1.android下读取 1.1 不能直接使用C#的FileStream,...
    99+
    2024-04-02
  • unity怎么使用文件流读取streamingassets下的资源
    这篇文章将为大家详细讲解有关unity怎么使用文件流读取streamingassets下的资源,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。目的:读取streamingassets下的文件中指定的一段字节...
    99+
    2023-06-14
  • PyQt5编程扩展之资源文件的使用教程
    目录本例运行效果: 设计Qt窗体 建立项目放一个Group Box放三个Label放一个Horizontal Slider放两个Line Edit层次结构&nbs...
    99+
    2023-03-03
    pyqt5 资源文件 pycharm pyqt5
  • Android中资源文件用法简单示例
    本文实例讲述了Android中资源文件用法。分享给大家供大家参考,具体如下: 一、XML文件间资源文件的使用 引用格式: attribute="@[packagename:]...
    99+
    2022-06-06
    示例 源文件 Android
  • maven-resources-plugin插件怎么使用
    这篇文章主要介绍了maven-resources-plugin插件怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇maven-resources-plugin插件怎么使用文章都会有所收获,下面我们一起来看...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作