五分钟教你编写一个关于VB.NET资源文件

开发 后端
时下许多网上的软件都有什么多国语言版之类的说法,实在点就是同一程序在安装或使用过程中有个国家区域选项,当你选择了对应的国家时,程序就会显示使用相应国家语言的界面,本为介绍利用VB.NET资源文件来解决这个问题。

在我的印象中,资源是一种很宝贵的东西,不知道大家的观点是不是,资源在作为国际化出现的时候,执行文件已不再是单调的英文面孔,汉语、西班牙语等国际语言的支持强烈要求同样的程序,可以使用不同的语言界面。在当时,将程序逻辑代码和提示信息分离是一个不错的主意,堤示信息分离出来成为一个资源文件而独立存在,在程序进行编译时再由编译器链接到可执行文件中。

直到现在,资源在这个方面依然扮演着重要的角色。以下以VB.net的一个小例子说明资源的存在:

例一:时下许多网上的软件都有什么多国语言版之类的说法,实在点就是同一程序在安装或使用过程中有个国家区域选项,当你选择了对应的国家时,程序就会显示使用相应国家语言的界面。其实在编程实现这种功能非常简单,只不过是使程序同时嵌入几个不同语言VB.NET资源文件而已,以下示例就是一个同时支持英文和中文界面的示例程序。程序创建完整步骤如下:

1、在VB.net中新建一个项目,类型选择windows应用程序,项目名称改为resourcesample1。
2、在form1上放一个Lable控件.
3、选择窗体form1,按以下指示设置属性:
(1)Locallizable 属性设为True,这一步是关键,这个属性告诉net环境,要使用资源文件来保存窗体及窗体内的各种控件的属性值.
(2)选择窗体的language属性,将其设为英语。然后按下表设置窗体及lable控件的其它属性:

控件名称 属性 属性值

  1. Form1 text Form   
  2. Label  Text Let's speak English!  

窗体外观如下:

浅析VisualBasic.NET中的资源使用
图1

(3)重新选择窗体的language属性,将其设为中文(简体)。然后按下表设置窗体及lable控件的其它属性:

控件名称 属性 属性值

  1. Form1 text 窗体   
  2. Label Text      

让我们说中文!

窗体外观如下:

浅析VisualBasic.NET中的资源使用
图2

大家也许很奇怪,为什么要对窗体及label的text属性进行两次不同的赋值呢?其实答案很简单,vs.net太聪明了,由于我们使用Locallizable 属性告诉net环境,要使用VB.NET资源文件来保存窗体及窗体内的各种控件的属性值,当使用不同的language属性,它会将窗体及其上控件的属性按语言分别记录在不同的资源文件内。不信你将language属性重新设为英语看看,第一个英文界面的窗体又跳出来了吧8-D
4、如果说可视化编程是光明之途的话,那么我们的快乐时光到此结束,由于net还没有智能化到会判断什么时候使用什么国家的语言界面的程度(如果net 太智能了,程序员就不幸了,下岗啊,谁受得了?!),所以以下必须由我们自己编写代码确定程序的实际界面显示。

打开 form1的New过程,在InitializeComponent()前加入如下代码(这段代码作用是在窗体初始化组件之前,按指定的语言区域信息载入相应的界面VB.NET资源文件):

  1. Dim tenmDialogResult As DialogResult  
  2. tenmDialogResult = MessageBox.Show("请问是使用中文还是英语,中文选择OK,英文选择CANCEL。", _   
  3. "语言选择", _  
  4. MessageBoxButtons.OKCancel, _  
  5. MessageBoxIcon.Question, _  
  6. MessageBoxDefaultButton.Button1, _  
  7. MessageBoxOptions.DefaultDesktopOnly)   

REM 一般情况下程序都是使用读取初始化文件的方法来取得语言设置信息,

  1. '但本例程为了简便起见,仅使用一个对话框提示用户选择适合自己的语言.  
  2. If tenmDialogResult = DialogResult.OK Then '使用中文界面  
  3. gstrAppCulture = "zh-CHS" 
  4. Else '使用英文界面  
  5. gstrAppCulture = "en" 
  6. End If  
  7. '将需要使用的区域信息放到当前线程的区域信息中,  
  8. '程序窗体会根据设定的信息装载相应的资源文件以显示信息  
  9. System.Threading.Thread.CurrentThread.CurrentUICulture = _ 
  10. New System.Globalization.CultureInfo(gstrAppCulture)   

剩下的事这没什么好说的了,按运行吧,在出现对话框时试着点OK或Cancel看看你的杰作吧,很酷的同时支持中英文界面的示例程序哦。

【编辑推荐】

  1. 剖析VB.NET CASE语句
  2. VB实例教程之教你如何制作多媒体程序
  3. 全面概括VB格式输出函数Format的使用
  4. 程序员必看VB.NET CASE语句拓展篇
  5. 深入介绍VB.NET类库 SmartRWLocker技巧
责任编辑:田树 来源: 博客
相关推荐

2009-10-26 15:45:43

VB.NET类构造

2009-10-21 18:19:36

VB.NET实现拖放

2009-10-30 13:12:40

VB.NET创建类

2009-10-29 16:01:54

VB.NET资源文件

2009-11-04 13:12:33

VB.NET面向对象编

2009-10-28 11:27:34

VB.NET资源文件

2010-01-15 18:50:25

VB.NET资源文件

2009-11-10 11:54:12

VB.NET按钮

2009-11-03 11:01:45

VB.NET远程事件

2009-11-10 16:05:21

VB.NET格式化

2009-10-26 19:09:50

VB.NET转换形态

2022-06-28 12:35:21

DockerPython

2009-11-03 17:15:07

VB.NET开发Exc

2009-10-29 16:22:10

VB.NET操作MyS

2010-01-11 11:37:08

VB.NET操作CSV

2009-11-02 11:02:58

VB.NET XML文

2009-11-04 16:13:18

ADO.NET数据表

2009-10-28 10:58:34

VB.NET定时器事件

2009-11-10 12:12:57

VB.NET函数

2010-01-14 13:51:03

点赞
收藏

51CTO技术栈公众号