五分鐘教你編寫一個(gè)關(guān)于VB.NET資源文件
在我的印象中,資源是一種很寶貴的東西,不知道大家的觀點(diǎn)是不是,資源在作為國(guó)際化出現(xiàn)的時(shí)候,執(zhí)行文件已不再是單調(diào)的英文面孔,漢語(yǔ)、西班牙語(yǔ)等國(guó)際語(yǔ)言的支持強(qiáng)烈要求同樣的程序,可以使用不同的語(yǔ)言界面。在當(dāng)時(shí),將程序邏輯代碼和提示信息分離是一個(gè)不錯(cuò)的主意,堤示信息分離出來(lái)成為一個(gè)資源文件而獨(dú)立存在,在程序進(jìn)行編譯時(shí)再由編譯器鏈接到可執(zhí)行文件中。
直到現(xiàn)在,資源在這個(gè)方面依然扮演著重要的角色。以下以VB.net的一個(gè)小例子說(shuō)明資源的存在:
例一:時(shí)下許多網(wǎng)上的軟件都有什么多國(guó)語(yǔ)言版之類的說(shuō)法,實(shí)在點(diǎn)就是同一程序在安裝或使用過(guò)程中有個(gè)國(guó)家區(qū)域選項(xiàng),當(dāng)你選擇了對(duì)應(yīng)的國(guó)家時(shí),程序就會(huì)顯示使用相應(yīng)國(guó)家語(yǔ)言的界面。其實(shí)在編程實(shí)現(xiàn)這種功能非常簡(jiǎn)單,只不過(guò)是使程序同時(shí)嵌入幾個(gè)不同語(yǔ)言VB.NET資源文件而已,以下示例就是一個(gè)同時(shí)支持英文和中文界面的示例程序。程序創(chuàng)建完整步驟如下:
1、在VB.net中新建一個(gè)項(xiàng)目,類型選擇windows應(yīng)用程序,項(xiàng)目名稱改為resourcesample1。
2、在form1上放一個(gè)Lable控件.
3、選擇窗體form1,按以下指示設(shè)置屬性:
(1)Locallizable 屬性設(shè)為True,這一步是關(guān)鍵,這個(gè)屬性告訴net環(huán)境,要使用資源文件來(lái)保存窗體及窗體內(nèi)的各種控件的屬性值.
(2)選擇窗體的language屬性,將其設(shè)為英語(yǔ)。然后按下表設(shè)置窗體及l(fā)able控件的其它屬性:
控件名稱 屬性 屬性值
- Form1 text Form
- Label Text Let's speak English!
窗體外觀如下:
圖1
(3)重新選擇窗體的language屬性,將其設(shè)為中文(簡(jiǎn)體)。然后按下表設(shè)置窗體及l(fā)able控件的其它屬性:
控件名稱 屬性 屬性值
- Form1 text 窗體
- Label Text
讓我們說(shuō)中文!
窗體外觀如下:
圖2
大家也許很奇怪,為什么要對(duì)窗體及l(fā)abel的text屬性進(jìn)行兩次不同的賦值呢?其實(shí)答案很簡(jiǎn)單,vs.net太聰明了,由于我們使用Locallizable 屬性告訴net環(huán)境,要使用VB.NET資源文件來(lái)保存窗體及窗體內(nèi)的各種控件的屬性值,當(dāng)使用不同的language屬性,它會(huì)將窗體及其上控件的屬性按語(yǔ)言分別記錄在不同的資源文件內(nèi)。不信你將language屬性重新設(shè)為英語(yǔ)看看,第一個(gè)英文界面的窗體又跳出來(lái)了吧8-D
4、如果說(shuō)可視化編程是光明之途的話,那么我們的快樂(lè)時(shí)光到此結(jié)束,由于net還沒(méi)有智能化到會(huì)判斷什么時(shí)候使用什么國(guó)家的語(yǔ)言界面的程度(如果net 太智能了,程序員就不幸了,下崗啊,誰(shuí)受得了??。?,所以以下必須由我們自己編寫代碼確定程序的實(shí)際界面顯示。
打開 form1的New過(guò)程,在InitializeComponent()前加入如下代碼(這段代碼作用是在窗體初始化組件之前,按指定的語(yǔ)言區(qū)域信息載入相應(yīng)的界面VB.NET資源文件):
- Dim tenmDialogResult As DialogResult
- tenmDialogResult = MessageBox.Show("請(qǐng)問(wèn)是使用中文還是英語(yǔ),中文選擇OK,英文選擇CANCEL。", _
- "語(yǔ)言選擇", _
- MessageBoxButtons.OKCancel, _
- MessageBoxIcon.Question, _
- MessageBoxDefaultButton.Button1, _
- MessageBoxOptions.DefaultDesktopOnly)
REM 一般情況下程序都是使用讀取初始化文件的方法來(lái)取得語(yǔ)言設(shè)置信息,
- '但本例程為了簡(jiǎn)便起見(jiàn),僅使用一個(gè)對(duì)話框提示用戶選擇適合自己的語(yǔ)言.
- If tenmDialogResult = DialogResult.OK Then '使用中文界面
- gstrAppCulture = "zh-CHS"
- Else '使用英文界面
- gstrAppCulture = "en"
- End If
- '將需要使用的區(qū)域信息放到當(dāng)前線程的區(qū)域信息中,
- '程序窗體會(huì)根據(jù)設(shè)定的信息裝載相應(yīng)的資源文件以顯示信息
- System.Threading.Thread.CurrentThread.CurrentUICulture = _
- New System.Globalization.CultureInfo(gstrAppCulture)
剩下的事這沒(méi)什么好說(shuō)的了,按運(yùn)行吧,在出現(xiàn)對(duì)話框時(shí)試著點(diǎn)OK或Cancel看看你的杰作吧,很酷的同時(shí)支持中英文界面的示例程序哦。
【編輯推薦】