一、新建項目
啓動Microsoft Visual Studio .NET,新建一個C#項目MyApp,本例工程存放於F:CsharpMyApp。
二、添加控件
在Form1 窗體上添加三個控件(見圖1):主菜單MainMenu、標籤Label1和按鈕Button1。Label1和Button1控件的屬性均採用缺省設置。MainMenu控件中添加三個菜單項menuItem1、menuItem2、menuItem3。Text屬性分別設爲“語言”、“中文”和“English”。menuItem2、
menuItem3 的RadioCheck屬性設爲True。
圖 1 |
三、創建配置文件
在項目中添加一個文本文件MyAppConfig.ini,保存當前程序的語言版本設置。該文件中只有一行內容。如果是“English”,則表示程序爲英文版;如果是“Chinese”則爲中文版。這裏暫且保存爲“English”。
四、創建資源文件
.NET中的資源文件有三種: 文本(.txt )文件、XML 格式的.Resx 文件和.Resources 文件。文本文件只能包含形如“ 名稱= 值”格式的字符串資源。.Resx文件和.Resources 文件中不僅能保存字符串資源,還能保存圖像等可序列化的持久對象資源。但是隻有.resources 文件格式的資源文件才能被嵌入到運行庫可執行文件中,或被編譯爲附屬程序集。利用Visual Studio .NET 中自帶的資源文件生成器
(Resgen.exe),可以將.txt文件和.Resx文件轉換爲.resources 文件格式。本例中只用到了字符串資源,所以在項目中添加兩個文本文件Resource_zh.txt 和Reource_en.txt。
Reource_en.txt 文件中的內容:
menuItem1_Name=Language button1_Name=Exit label1_Text=This is English version! |
Resource_zh.txt 文件中的內容:
menuItem1_Name=語言 button1_Name=退出 label1_Text=這是中文版! |
需要注意的是Resource_zh.txt文件中含有漢字,必須以UTF-8編碼保存。在Visual Studio .NET集成開發環境中,可以先點擊“文件”菜單中的“高級保存選項”,選中UTF-8編碼格式,再保存文件。
然後,點擊“程序”菜單中的“Visual Studio .NET命令提示”菜單,進入DOS方式,輸入以下兩行命令,生成程序中能夠訪問的資源文件MyApp.resources和MyApp.zh-CN.resources。英文資源文件MyApp.resources 作爲默認的後備資源文件。MyApp.zh-CN.resources
是中文資源文件,文件名中的“MyApp”是資源文件的根名稱,必須與後備資源文件的根名稱相同,“zh-CN”指定資源文件的區域性。
F:CsharpMyApp>resgen Resource_en.txt,MyApp.resources
F:CsharpMyApp>resgen Resource_zh.txt,MyApp.zh-CN.
resources
五、修改代碼
1、在代碼的開頭添加需引用的命名空間。
using System.Globalization; using System.Resources; using System.Threading; using System.IO; |
2、在Form1 中定義兩個字段ci和rm。CultureInfo對象ci用來指定讀取資源文件時的區域性。ResourceManager對象rm用來在指定的資源文件中讀取資源。
CultureInfo ci = new CultureInfo(""); Res ource Manag er rm = Res ource Manag er.CreateFileBasedResourceManager("MyAPP", ".", null); |
3、在Form1中添加一個方法ReadResources,用來讀取相應資源文件中的字符串資源,來修改界面菜單、標籤和按鈕上文字顯示。
private void ReadResources(){ this.menuItem1.Text = rm.GetString("menuItem1_Text",ci) ; this.button1.Text = rm.GetString("button1_Text",ci); this.label1.Text = rm.GetString("label1_Text",ci); this.Refresh(); } |
4、在Form1 的Load事件處理過程中,根據配置文件的內容,調用ReadResources方法,讀取資源,顯示程序界面。
private void Form1_Load(...) { StreamReader sr=File.OpenText("MyAppConfig.ini"); if (sr.ReadLine()=="Chinese"){ ci = new CultureInfo("zh-CN"); menuItem2.Checked=true; } else { ci = new CultureInfo("en"); menuItem3.Checked=true; } sr.Close(); this.ReadResources(); } |
5、在Form1 中添加一個方法SaveConfig,用來修改配置文件。在menuItem2 和menuItem3 的Click事件過程中調用S a v e C o n f i g 方法,分別將字符串“Chinese”、“English ”寫入配置文件,並調用ReadResources方法,來更新界面。
private void SaveConfig(string p_Language){ StreamWriter sw=File.CreateText("MyAppConfig.ini"); sw.WriteLine(p_Language); sw.Close(); } private void menuItem2_Click(...){ this.SaveConfig("Chinese");ci = new CultureInfo("zh-CN"); menuItem2.Checked=true; menuItem3.Checked=false; this.ReadResources(); } private void menuItem3_Click(...){ this.SaveConfig("English"); ci = new CultureInfo("en"); menuItem2.Checked=false; menuItem3.Checked=true; this.ReadResources(); } |
6、在按鈕button1的Click事件過程中,關閉窗體,結束運行程序。
private void button1_Click(...) { this.Close(); } |
六、編譯並運行程序
如果手工編譯源程序,只需點擊“Visual Studio.NET 命令提示”菜單,進入DOS方式,輸入下面命令,即可生成二進制的可執行文件MyApp.exe,然後輸入MyApp,就能運行程序。
F:/Csharp/MyApp>csc /out:MyApp.exe form1.cs
如果是在Microsoft Visual Studio .NET 集成開發環境中運行程序,將自動進行編譯,並將編譯的二進制可執行文件放到bin/Debug子目錄下。此時,需要注意的是要將MyAppConfig.ini、MyApp.resources 和MyApp.zh-CN.resources 這三個文件也複製到bin/Debug/子目錄下,程序才能正常運行。
程序第一次運行時,是英文界面(見圖2),點擊菜單“中文”,將變成中文界面(見圖3)。單擊按鈕“Exit”,退出程序後,再次運行程序時,直接顯示中文界面。
圖2 |