NET资源入门之分析篇

.NET中有各种资源,例如嵌入的资源,本地资源,以及存在于.resx文件中的资源,如何应用它们?它们之间有什么区别?本文试图通过一个简单的例子对它们进行解释,希望对你有所帮助。

在本文中我通过一个简单的例子展示如何设置和使用它们,此程序可以在这里下载。运行后的界面如图1所示:

1 程序主界面

1.         嵌入的资源(Excel.png为例)

添加方法:将文件的BuildAction属性设置为Embedded Resource,如图2所示。

2 嵌入的资源

访问方法
Assembly.GetExecutingAssembly().GetManifestResourceStream("DotNetResourceDemo.Resources.excel.png");其中Resources为此资源所在的目录名字。

在程序集中的存在方式Reflector是我最喜欢的工具之一,让我们利用它来分析一下我们的可执行文件吧。可以看到嵌入的资源直接位于Resources文件夹下面,如图3所示。

3 嵌入的资源在Reflector中的表现方式

2.         本地资源(go.gif为例)

添加方法:以PictureBox为例,在设计器中,单击PictureBox右上角的智能标记,选择Choose Image,弹出图4所示的对话框,依次单击|Local Resource|Import,然后选中你希望的资源即可。

                                图4 添加本地资源

访问方法:在*.designer.cs文件中使用
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.pbLocal.Image = ((System.Drawing.Image)(resources.GetObject("pbLocal.Image")));
注意,如果使能了窗体本地化,那么使用语句resources.ApplyResources(this.pbLocal, "pbLocal");应用资源在这里我们有必要对这个方法的功能说明一下。ApplyResources尝试通过objectName.PropertyName格式的键查找资源,如果我们使用Reflector查看生成的可执行文件,那么会发现pbLocal所对应的资源,如下图所示,此方法应该会对pbLocal对象应用所有属性,包括ImageLocation等等。

在程序集中的存在方式:单击图3中的DotNetResourceDemo.MainForm.resources,在右侧的反汇编窗口(如图5所示)中可以看出它是以Name/Value的形式存在的。


 

                     图5 本地资源在Reflector中的存在方式

3.         Resx文件中的资源(FreeBSD为例)

添加方法:双击Resources.resx文件,然后单击”Add Resource”即可。

 

6 .resx文件中添加资源

访问方式:this.Icon = DotNetResourceDemo.Properties.Resources.FreeBSD;

在程序集中的存在方式:DotNetResourceDemo.Properties.Resources.resources中。

注意:你也添加一个.resx文件,而且一般很有必要这样做。在这个resx文件中,一般保存着一些字符串资源。另外,一般为每一个程序集创建一个.resx资源文件。

在程序集中的存在方式:存在于图3DotNetResourceDemo.Properties.Resources.resources中。

 

后记:

源代码下载地址:http://download.csdn.net/source/837536

CSDN的博客图片怎么每次添加第二个图片的时候就出错呢?以后再添加吧。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值