资源文件顾名思义就是存放资源的文件。资源文件在程序设计中有着自身独特的优势,他独立于源程序,这样资源文件就可以被多个程序使用。同时在程序设计的时候,有时出于安全或者其他方面因素的考虑,把重要东西存放在资源文件中,也可以达到保密、安全的效果。那么Visual C#所使用的资源文件中到底存放哪些东西呢?在用Visual C#创建资源文件大致可以存放三种类型的数据资源,分别是字节数组、各种对象和字符串。本文将结合一个程序例子来具体说明用Visual C#是如何创建资源文件的。

一.用Visual C#在创建资源文件用到的一些概念和理论:

在.Net FrameWork SDK中的一个名字叫System.Resources名称空间,在此名称空间中为应用程序提供了许多创建、存储和使用资源文件的类和接口。其中有一个类叫ResourceWriter,Visual C#就是通过调用这个类来实现创建、存储资源文件的。

二.Visual C#如何创建资源文件:

首先要继承一个ResourceWriter类,然后调用ResourceWriter类的一个方法Generate ( ),就可以产生一个资源文件了。具体语句如下:

ResourceWriter rw = new ResourceWriter ( "My.resources" ) ;
rw.Generate (
) ;

此时在磁盘的中就会产生一个名称为"My.resources"的资源文件,但此时的资源文件没有任何内容,下面我们就来看看如何往资源文件中添加资源。

三.在资源文件中添加资源:

在ResourceWriter类中提供了一个AddResource ( )方法,这个方法的作用就是往资源文件中添加资源的。在Visual
C#中对不同的资源有着不同的加入方式。

(1).加入字节数组,语法格式为:



Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

-->public void AddResource ( string , byte [ ] ) ;

注释:其中string是在使用资源文件的时候,此字节数组在程序中的的唯一标识符

(2).加入对象,语法格式为:



Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

-->public void AddResource ( string , object );

注释:其中string是在使用资源文件的时候,此对象在程序中的唯一标识符

在本文程序中,我们利用这种调用方式来加入图标和图象,具体如下:



Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

-->Icon ico = new Icon ( "Demo.ico" ) ;

Image canceloff = Image.FromFile ("cancel-off.png") ;

Image cancelon = Image.FromFile ( "cancel-on.png" ) ;

Image cancelover = Image.FromFile ( "cancel-over.png" ) ;

Image okdown = Image.FromFile ( "ok-down.png" ) ;

Image okoff = Image.FromFile ( "ok-off.png" ) ;

Image okon = Image.FromFile ( "ok-on.png" ) ;

rw.AddResource ( "demo.ico" , ico ) ;//在资源文件中加入图标

//以下是在资源文件中加入图象

rw.AddResource ( "cancel-off.png" , canceloff ) ;

rw.AddResource ( "cancel-on.png" , cancelon ) ;

rw.AddResource ( "cancel-over.png" , cancelover ) ;

rw.AddResource ( "ok-down.png" , okdown ) ;

rw.AddResource ( "ok-off.png" , okoff ) ;

rw.AddResource ( "ok-on.png" , okon ) ;

(3).加入字符串,具体语法如下:



Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

-->public void AddResource ( string1 , string2) ;

注释:其中string1是在使用资源文件的时候,此字符串在程序中的唯一标识符在本文的程序中,是如此使用的:



Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

-->rw.AddResource ( "MyStr" , "从资源文件中读取字符串!" );

至此我们已经创建了一个资源文件,并且在资源文件中加入了若干个资源,当然在这之后,还应该注意,保存此资源文件,并关闭资源文件,具体如下:



Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

-->rw.Close ( ) ;

四.创建资源文件的源程序代码:

通过上面的论述,我们不难理解下面这些代码。下列程序代码的作用就是,创建一个名称为"My.resources"资源文件,并且在此资源文件中加入一个图标资源,若干个图象资源,和一个字符串资源。具体代码如下:

CreatResources.cs:



Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

-->using System;

using System.Drawing;

using System.Resources;

class CreatResource

{

public static void Main()

{

ResourceWriter rw = new ResourceWriter("My.resources");

Icon ico = new Icon("Demo.ico");

Image canceloff = Image.FromFile("cancel-off.png");

Image cancelon = Image.FromFile("cancel-on.png");

Image cancelover = Image.FromFile("cancel-over.png");

Image okdown = Image.FromFile("ok-down.png");

Image okoff = Image.FromFile("ok-off.png");

Image okon = Image.FromFile("ok-on.png");

rw.AddResource("demo.ico", ico);

rw.AddResource("cancel-off.png", canceloff);

rw.AddResource("cancel-on.png", cancelon);

rw.AddResource("cancel-over.png", cancelover);

rw.AddResource("ok-down.png", okdown);

rw.AddResource("ok-off.png", okoff);

rw.AddResource("ok-on.png", okon);

rw.AddResource("MyStr", "从资源文件中读取字符串!");

rw.Generate();

rw.Close();

}

}

最好还要提醒一下,在成功编译成执行文件后,在执行此文件的时候,必须保证在此执行文件的相同目录,存在上面代码中提到名称的图标和图象,否则在创建资源文件的时候是会出错的。

五.总结:

可见用Visual C#创建资源文件并不是一个复杂的过程,在下一篇文章中,我们将介绍如何在Visual C#使用资源文件中资源。这才是Visual C#资源文件编程的重点和难点。当然文中所使用的资源文件就是以本文中创建的资源文件。

最新文章

  1. MicroERP软件更新记录2.0
  2. linq lanbda表达式的用法
  3. 使用 highchart 绘制柱状图的通用方法与接口
  4. php实现快速排序
  5. FZU 2124 bfs+vis记录
  6. http://blog.csdn.net/clementad/article/details/47403185
  7. 转:python webdriver API 之定位 frame 中的对象
  8. phonegap环境搭建
  9. 转Java 回调函数的理解
  10. Tkinter教程之Canvas篇(4)
  11. 1003. Parity(并查集)
  12. python bisect模块
  13. .NET,你真的 知道了吗
  14. [转]如何正确清理C盘
  15. NET,ASP.NET,C#,WinFrom之间的联系与区别
  16. Linux-7.2+LNMP+zabbix-3.2.1
  17. Junit指定测试执行顺序
  18. .NET开发微信小程序-获取OpenId
  19. emacs单词首字母,单词,区域大小写转换
  20. 在Linux系统中同步更新我们的Github博客

热门文章

  1. PHP-Open Flash Chart学习一(swfobject知识)
  2. 获取网站资源 getResourceAsStream
  3. HDUOJ-----2175取(m堆)石子游戏
  4. HDUOJ---1712 ACboy needs your help
  5. Python Socket编程初探
  6. Android开发学习之3大类菜单
  7. Android中的Service使用
  8. posix 条件变量与互斥锁 示例生产者--消费者问题
  9. 五种I/O模型和select函数简介
  10. __attribute__中constructor和destructor