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