




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C#资源文件的使用方法C#资源文件的使用方法一、导言 microsoft的.net从2002 年 1 月 15 日第一版发布到今天,已经得到了广泛的使 用;从刚推出时国内相关书籍种类寥寥,到今天 .net 的相关书籍的大大丰富,已有越来越多的人初学者或者 有经验的程序员,在学习、应用 .net。本文面向对.net有些了 解的者,以C#为例,介绍如何 在.net编程环境中,把资源文件(如包含图片、字符串等的 资源文件)嵌入到程序集中。 这里的所说的程序集可以是 exe 文件,也可是供其他程序调用的 dll 文件。本文不涉及国际化、 本地化、 打包和部署资源方面的内容, 有兴趣的读者可以查阅 .n
2、et framework sdk 文档。软件环境运行本文中的程序需要如下软件环境:windows2000/xp, .net frameworksdk。本文中的代码在如下环境中运行通过:windows xpprofessional, .net framework v1.1 程序都需要使用资源。资源是在逻辑上由应用程序部署的任 何非可执行数据。资源可以在应用程序中作为错误信息显 示,或者作为用户界面的visual 2003。、资源文件几乎每一个生产性应用部分显示。资源可以包含多种形式的数据,包括字符串、图像和持久的对象。通过在资源文件中存储数据,无需重新编译整个应用程序即可更改数据。在.net中,
3、有文本文件.resx文件和.resources文件三种资源文件。如果资源将只包含字符串数据,则文本 文件是最简单的选择。如果资源将包含对象或字符串与对象的组合,则必须创建 .resx 文件或.resources 文件。注意,只有.resources 文件才应能嵌入在公共语言运行库程序集和附属程序集中。四、创建资源文件 创建资源文件,有编写代码以及利用名为 reseditor 的软件这 两种途径。以下分述之。 4.1 编写代码创建资源文件 .net framework 类库中提供了 resourcewriter 类来创建 .resources。 resourcewriter 类以文件。 reso
4、urcewriter 类包含在 system.resources命名空间中 系统默认的格式将资源写入输出文件或输出流。在 resourcewriter 类中使用 addresource 方法将资源指定为名 称和值对。资源名在用于查找时是区分大小写的,但是,为更易于支持创作工具和帮助消除错误, resourcewriter 将不允许使用仅大小写不同.resources 文件名。若要创建一个资源文件,请用唯一的文件名创建resourcewriter,至少调用 addresource 一次,再调用 generate 将该资源文件写入磁盘, 然后调用 close 关闭该文件。下面的示例将若干个字符串写
5、 入到 myresources.resources 文件中。 /例 1/本示例代码来自 .net framework sdk 文档 /createrestest_1_1.csusing system;using system.resources;public class writeresources public static void main(string args) / creates a resource writer.iresourcewriter writer = new resourcewriter("myresources.resources");/ add
6、s resources to the resource writer.writer.addresource("string 1", "first string");writer.addresource("string 2", "second string");writer.addresource("string 3", "third string");/ writes the resources to the file or stream, and closes it.wri
7、ter.close(); 编 译代码: csc createrestest_1_1.cs , 编译成功后,则在工作目 录里生成名为 createrestest_1_1.exe的可执行文件;运行该文件,在工作目录中生成名为string.resources的资源文件。以给出了字符串写入资源文件的例子,下面的示例尝试将若干张图片嵌入到资源文件myresources.resources 中。 /例2/createrestest_1_2.csusing system;using system.drawing;using system.resources;public class creatpicreso
8、urcepublic static void main ()/ creates a resource writer.resourcewriter rw = new resourcewriter ( "picture.resources" );/ 从指定的文件创建 image对象./_bird.png、_butterfly.png文件在当前工作目录 image _bird_pic = image.fromfile ( "_bird.png" );image象添加到资源文件中_butterfly_pic = image.fromfile ("_bu
9、tterfly.png" );/扌巴 image 对' /resourcewritername.addresource(stringname, object value); /其中name为资源名,value为资源值 rw.addresource ( "bird" , _bird_pic );rw.addresource ( "butterfly" , _butterfly_pic );/ writes the resources to the file or stream, and closes it.rw.generate ();r
10、w.close (); 确保 _bird.png和_butterfly.png文件在当前工作目录。编译代码: csc createrestest_1_2.cs ,如编译成功,生成createrestest_1_2.exe;运行该文件,则生成资源文件 picture.resources。 4.2 利用资源编辑器 (reseditor)创建资源文件 .net framework中包含一个称为 reseditor 的示例应用程序,它可帮助您创建和编辑资源文件。reseditor可以创建二进制资源文件 (.resources) 以及 xml 资源文件 (.resx)。生成reseditorresedi
11、tor以源代码的形式随 .net framework sdk 一起提供。必须先使用提供的批处理文件生 reseditor,然后才能使用它。找到' sdkv1.1samplestutorialsresourcesandlocalizationreseditor 文 件夹,运行批处理文 件build.bat,编译成功后,生成reseditor.exe应用程序。在笔者所用的环境中,路径如下:program filesmicrosoft visual studio .net 2003sdkv1.1samplestutorialsresourcesandlocalizationresedit o
12、r 。生成 reseditor 后, 您可以使用它创建、 编辑资源文件。使用 reseditor 创建资源文件启动 reseditor 应用程序。从“ 添加”下拉菜单中选择要添加的资源类型。在 “ 添加”文本框中键入资源的名称,然后单击 “ 添加”按钮,将资源项添加到文件中。在主窗 格中,单击资源名称旁边的单元格以指定一个值。对于 “ 字符串 ” 资源,在该框中键入相应的字符串。对于“ 图像” 和
13、其他类型的资源, 请浏览到相应 5。在“文件” 菜单中,单击 “ 另存为 ” 以保存文件。 您可以将文件保存为 .resources 文件, 也可以保存为 .resx 文件。编辑现有资源文件可以使用 reseditor 编辑现有资源文件 ( .resources 文件和 .resx 文件)。的文件。对于要添加到文件中的每个资源,重复步骤3、4、使用方法如下:启动 reseditor 应用程序。在 “ 文件 ”菜单上单击 “打开” 。在&
14、amp;#8220; 打开资 源文件 ” 对话框中浏览到相应的资源文件。资源文件 打开,并且它包含的资源显示在主窗格中。如果要更改任何 资源的值,请单击资源名称旁边的单元格并指定正确的值。对于“字符串 ”资源,在该框中键入相应的字符 串。对于 “图像 ”和其他类型的资源,请浏览到 相应的文件。如果要重命名资源,请执行以下操作:通过单 击要重命名的资源,突出显示它。在 “重命名 ”文本框中键入新名称。单击 “重命名 ”
15、按钮,应用新名称。如果要删除资源,请通过单击该资源将其突出显 示,然后从 “ 资源”菜单中选择 “ 删除 ” 。编辑完资源文件后,选择 “文件” , 然后选择 “ 另存为 ” 以保存文件。五、使用资源 文件创建了资源文件后,很容易将它们添加到您的应用程序中。二进制资源文件 (.resources) 或 xml 资源文件 (.resx)可直接添加到您的项目中。当编译项目时,同时也会编译资源文件。您可以通过使用 resourcemanage
16、r类检索嵌入的资源(即已经编译到程序集中的资源)。如果您希望经常更新程序中的资源而无需重新编译整个解决方 案,可创建一个资源程序集。 5.1 在命令行编译中使用资源 文件这里使用例2代码生成的资源文件 picture.resources作为 示例。示例代码 createrestest 2 1.cs如下:/例 3/createrestest_2_1.csusing system;using system.drawing;using system.windows.forms;using system.resources;using system.reflection;public class te
17、stresform : system.windows.forms.formprivate picturebox picbox1;private picturebox picbox2;public testresform()picbox1 = new picturebox();picbox1.location = new point(0,0);picbox1.width = rescontainer.instance.butterflyimage.width;picbox1.height = rescontainer.instance.butterflyimage.height;picbox1.
18、image = rescontainer.instance.butterflyimage;picbox2 = new picturebox();picbox2.location = new point(0,100);picbox2.width = rescontainer.instance.birdimage.width;picbox2.height = rescontainer.instance.birdimage.height;picbox2.image = rescontainer.instance.birdimage;controls.add(picbox1);controls.a d
19、d(picbox2);this.size = new size(200,200);public static void main()application.run(new testresform();public class rescontainer/ data membersprivate image _birdimage = null;private image _butterflyimage = null;private static rescontainer _instance = new rescontainer();/ constructorprivate rescontainer
20、()tryresourcemanager rm = new resourcemanager( "picture",assembly.getexecutingassembly() ) ;_butterflyimage = (image)( rm.getobject ( "butterfly" ) );_birdimage = (image)( rm.getobject ( "bird" ) );catch(exception ex)ex.tostring();/ propertiespublic static rescontainer
21、instancegetreturn _instance;public image butterflyimagegetreturn _butterflyimage;public image birdimagegetreturn _birdimage; 在控制台下, 切换工作目录到当前代码、 资源 文件所在目录,运行 csharp编译器esc (具体使用请参见.net framework sdk)。确保资源文件存在且正确,输入: esc /t:winexe /resource:picture.resourcesuserestest_2_1.cs 编译成功后得至Uuserestest_2_1.cs.
22、exe 5.2 在 visual 中使用资源文件向您的项目添加资源文 件:从 “项目̶ 1 ;菜单中,选择 “添加现有 项”。“添加现有项 ̶ 1 ;对话框打开。浏览 至要添加至项目中的资源文件。它可能是 .resources 文件, 也可能是 .resx 文件。选择适当的文件。在 “ 生成。注意,如果对已添加至项目̶ 1 ;菜单中,选择 “生成解决方案 ̶ 1 ;将资源 文件嵌入至您的已编译项目中中的资源文件作
23、出更改,需要在“生成̶ 1 ;菜单 中,选择 “ 重新生成解决方案 ” ,使更改生效。至于代码,和userestest_2_1.cs略有不同。假设所在项目的 命名空间为 project1 ,则需要把 rescontainer 构造方法中的: resourcemanager rm= new resourcemanager( "picture", assembly.getexecutingassembly() ) ;改为:ResourceManager rm = new ResourceManager(" project1.picture",Assembly.GetExecutingAssembly() ) ; 如果不 加上命名空间,则生成解决方案时并不会出现任何错误提 示,而在编译、执行会出现错误。奇怪的时执行完Re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年足球裁判员职业化题及答案
- 用电安全课件题目编写
- 2024年篮球裁判员考试快速提升技巧 试题及答案
- 模具设计师考试应对策略的试题及答案
- 游泳救生员资格认证的步骤与试题及答案
- 农作物种子繁育员考试的备考时间规划试题及答案2024
- 2024年的裁判员考试解析路径及试题及答案
- 深究核心内容体育经纪人试题及答案
- 游泳救生员工作胜任能力测试题及答案
- 主管工作总结的工作合作与配合计划
- GB/T 12906-2008中国标准书号条码
- GB 31645-2018食品安全国家标准胶原蛋白肽
- 湖北省市场主体发展分析报告
- GCP培训考试题库及参考答案(完整版)
- 乒乓球社团活动记录
- 个人信用信息基础数据库数据接口规范
- 绘本《还有一只羊》课件
- 新时代中小学教师职业行为十项准则考核试题及答案
- 《变态心理学与健康心理学》考试复习题库150题(含答案)
- DB15T 489-2019 石油化学工业建设工程技术资料管理规范
- 模具保养记录表
评论
0/150
提交评论