巧妙揭秘VB.NET资源使用

开发 后端
当你点击解决方案资源管理器,点击"显示所有文件"的按纽,很惊奇地发现在form1.vb下出现了几个后缀名为resx的文件,这些家伙就是本文要说明的VB.NET资源使用。

我们要透过现象看到事物的本质,这句话也适合我们编程人,只要你看清了开发语言的本质你才能走入它的世界,我虽说对哲学不感兴趣,但对net在后台到底瞒着我干了些什么见不得光的勾当还是非常好奇的。点击解决方案资源管理器,点击"显示所有文件"的按纽,很惊奇地发现在form1.vb下出现了几个后缀名为resx的文件,这些家伙就是本文要说明的资源文件了(留意一下资源文件的文件名包含的en和zh-CHS的字符,这就代表该资源文件储存的语言内容,en为英文,zh-CHS为简体中文)下面我们用突破和代码详细的为你讲解VB.NET资源使用。

浅析VisualBasic.NET中的资源使用

 

双击form1.en.resx,看一下VB.NET资源使用储存界面的语言信息的:

 
浅析VisualBasic.NET中的资源使用


左边的数据源显示资源文件的实际数据(data)以及资源文件的文件版本信息(resheader),我只关心资源文件的实际数据储存,右边的表列出了储存的数据:很显然name代表控件的属性(其实是引用资源数据的键),后面的value代表对应键的实际数据(在程序中界面显示的值就靠这里了,你可以试着把Let's apeak English改一下,然后运行一下程序看看);comment代表注释,type代表数据的类型,mimetype就是资源数据的MIME 类型(当你窗体或picturebox存有图片时你会看到这里有一个很长的值,由于这个对编程作用不大,不作解释)。我们还可以在这个界面中插入新的资源数据,只要填写好name和value就可以了。

明白了资源文件后,我们再看一下代码中是怎样引用这引些值的,打开窗体的代码编辑器,展开"Windows 窗体设计器生成的代码"这一代码段,找到窗体的Private Sub InitializeComponent()过程,

第一句为:

  1. Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(Form1))  

这句代码的含义就是产生一个resourcemanager对象来对form1的资源文件进行控制,由于net 会根据线程的区域属性调用窗体的不同语言的资源文件,所以我们前面示例中将改变线程区域信息的代码放在InitializeComponent()过程之前,以便net在创建resources对象时调用正确的语言资源文件。

接下来就是一大堆对控件属性进行赋值的语句了,看一下label的text 属性是如何赋值的就会明白资源数据的使用方法了。

  1. Me.Label1.Text = resources.GetString("Label1.Text") 

很简单,使用ResourceManager的方法就可以获得实际需要的资源数据了必要时可以可以使用getobjcet方法取得数据,然后再用Ctype将其转为指定的类型。

写到这儿,本来按原计划我是想收笔的,但是天气依然阴沉沉,很闷,干脆就将资VB.NET资源使用的终极杀招也介绍一下好了。资源发展到现在已不权是简单地解决程序国际化的界面方面了,在net中可以使用资源将任意文件嵌入到你的可执行文件中,在需要时再用流的方式读出使用(是任意文件哦,而且方法非常简单),好象很酷的样子吧。

【编辑推荐】

  1. VB.NET NotifyIcon控件学习经验
  2. 浅析VB.NET使用MonthCalendar控件
  3. VB.NET Split函数学习笔记
  4. 学习VB.NET Data Report控件
  5. VB.NET使用Alias子句简介
责任编辑:田树 来源: 赛迪网
相关推荐

2010-01-07 15:18:10

VB.NET常量

2009-10-28 11:27:34

VB.NET资源文件

2009-10-21 14:36:03

VB.NET批量重命名

2010-01-18 16:26:46

VB.NET数组赋值

2009-10-14 17:08:44

VB.NET使用Fil

2010-01-11 16:04:10

VB.NET使用wit

2009-10-26 15:57:07

VB.NET使用Ora

2009-11-03 13:48:02

VB.NET枚举

2009-10-12 16:39:59

OracleTransVB.NET使用

2009-10-16 11:38:47

VB.NET使用Ali

2009-10-16 10:14:26

VB.NET使用Fil

2009-11-03 11:27:30

VB.NET界面

2009-10-09 14:55:02

VB.NET数组

2009-10-13 15:20:02

VB.NET使用Dra

2009-10-16 14:07:18

VB.NET使用Mon

2010-01-18 18:20:49

VB.NET使用API

2009-10-12 13:11:48

VB.NET使用线程

2009-10-20 10:29:30

VB.NET使用Sor

2009-11-02 13:54:27

VB.NET shel

2009-10-13 15:09:19

VB.NET使用Tre
点赞
收藏

51CTO技术栈公众号