返回顶部
首页 > 资讯 > 精选 >C#如何使用Resources资源文件
  • 145
分享到

C#如何使用Resources资源文件

2023-07-02 09:07:27 145人浏览 泡泡鱼
摘要

这篇文章主要讲解了“C#如何使用Resources资源文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#如何使用Resources资源文件”吧!一、创建资源文件可以将字符串、图像或对象数

这篇文章主要讲解了“C#如何使用Resources资源文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#如何使用Resources资源文件”吧!

一、创建资源文件

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

创建资源文件的方法:

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 文件分成两种情况: 

  • 被嵌入或编译成 Satellite Assembly:使用ResourceManager来获得在 Assembly 中的资源。 

  • 单独文件,没被编译或嵌入到Assembly:使用ResourceManager.CreateFileBasedResourceManager来获得资源集(ResourceSet)。

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

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

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

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

C#如何使用Resources资源文件

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

C#如何使用Resources资源文件

添加相关的资源。

C#如何使用Resources资源文件

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

C#如何使用Resources资源文件

使用强类型可直接使用类

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

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

C#如何使用Resources资源文件

强类型访问代码:

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是你添加的资源的名称)。 
只有向窗体上添加图标、图像等资源后

C#如何使用Resources资源文件

会在窗体设计器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 对象。

将本地要加入的资源文本(视频,图片,文本或其它)加入项目。比如我们现在加入一个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资源文件”的内容了,经过本文的学习后,相信大家对C#如何使用Resources资源文件这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

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

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

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

猜你喜欢
  • C#如何使用Resources资源文件
    这篇文章主要讲解了“C#如何使用Resources资源文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#如何使用Resources资源文件”吧!一、创建资源文件可以将字符串、图像或对象数...
    99+
    2023-07-02
  • C#使用Resources资源文件
    一、创建资源文件 可以将字符串、图像或对象数据等资源包含在资源文件中,方便应用程序使用。 创建资源文件的方法: 1、手动或使用IDE工具自动生成XML 资源 (.resx) 文件。(...
    99+
    2024-04-02
  • C#如何给新建的winform程序添加资源文件夹Resources
    目录给新建的winform程序添加资源文件夹ResourcesC#调用Resources里的资源给新建的winform程序添加资源文件夹Resources 小菜鸟开始学习WinFor...
    99+
    2024-04-02
  • Java读取resources下的文件及资源路径
    Java读取resources下的文件及资源路径 在Java开发中,经常需要读取项目中resources目录下的文件或获取资源路径。本文将介绍如何在Java中读取resources下的文件,并提供相关...
    99+
    2023-08-31
    java 前端 数据库
  • Springboot获取jar包中resources资源目录下的文件
    阿萨斯多问题现象:         今天在项目中遇到一个业务场景,需要用到resources资源目录下的文件,然后就在思考一个问题:         当项目打成jar后,Springboot要如何获取resources资源目录下的文件呢? ...
    99+
    2023-09-20
    spring boot spring java
  • Java读取resources中资源文件路径以及jar中文件无法读取如何解决
    今天小编给大家分享的是Java读取resources中资源文件路径以及jar中文件无法读取如何解决,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。Java读取resources中资源文...
    99+
    2023-07-06
  • PyQt5编程扩展之资源文件如何使用
    本文小编为大家详细介绍“PyQt5编程扩展之资源文件如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“PyQt5编程扩展之资源文件如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。本例运行效果:&nbs...
    99+
    2023-07-05
  • unity 如何使用文件流读取streamingassets下的资源
    目的:读取streamingassets下的文件中指定的一段字节 已知:文件中的起始位置,和需要读取的长度 1.android下读取 1.1 不能直接使用C#的FileStream,...
    99+
    2024-04-02
  • .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如何动态加载资源文件
    目录springBoot动态加载资源文件构造DynamicLoadPropertySource添加到EnviromentspringBoot静态资源动态加载举例说明springBoo...
    99+
    2024-04-02
  • 使用SpringBoot获取resources文件路径
    目录获取resources文件路径背景解决方案获取resource下文件夹路径的坑前提是maven项目的pom文件里面配置了这是后来我修改后的正常打包情况获取resources文件路...
    99+
    2024-04-02
  • Android 原始资源文件的使用详解
    背景知识介绍与其他平台的应用程序一样,Android中的应用程序也会使用各种资源,比如图片,字串等,会把它们放入源码的相应文件夹下面,如/res/drawable, /res/...
    99+
    2022-06-06
    源文件 Android
  • Android应用中是如何读取资源文件的
    这篇文章给大家介绍Android应用中是如何读取资源文件的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Android 读取资源文件实例详解直接从assets读取:private InputStream getAsse...
    99+
    2023-05-31
    android roi
  • java如何获取resources下的文件
    在Java中,可以使用`ClassLoader`类来获取`resources`下的文件。具体步骤如下:1. 创建`ClassLoad...
    99+
    2023-09-28
    java
  • springboot如何读取resources下的文件
    今天小编给大家分享一下springboot如何读取resources下的文件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。项...
    99+
    2023-07-02
  • windows文件资源管理器如何打开
    要打开Windows文件资源管理器,可以使用以下方法之一:1. 使用快捷键:按下Win键+E键。这将立即打开文件资源管理器。2. 使...
    99+
    2023-09-20
    windows
  • android开发教程之系统资源的使用方法 android资源文件
    一、颜色资源1、颜色XML文件格式 代码如下:<xml version="1.0" encoding="utf-8"><resources> //res...
    99+
    2022-06-06
    程之 源文件 方法 系统 android开发 教程 Android
  • GO语言API开发:如何使用文件路径定位资源?
    在GO语言开发中,文件路径是定位资源的重要方式之一。在使用文件路径定位资源的过程中,可能会遇到一些问题,例如路径格式不正确、文件不存在等。在本文中,我们将介绍如何使用文件路径定位资源,以及如何处理一些常见的问题。 文件路径的基本概念 ...
    99+
    2023-11-13
    api 文件 path
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作