在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

開始你的首個多語言版本的dotNET 應(yīng)用程序(WinForm篇)

開始你的首個多語言版本的dotNET 應(yīng)用程序(WinForm篇)

更新時間:2019-06-30 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

多語言版本的應(yīng)用程序曾是一個門檻,邁過去意味著它可以面對更多的使用者。對于商業(yè)程序來說一個本地化的版本意味著可能打開一個更大的市場。中文版也曾是我們心中有關(guān)中國軟件的一個情結(jié)和期望。希望dotNET能給我們帶來一些不同的觀點和變革,讓我們重新看待自己的每一個軟件應(yīng)用。在這里我避免涉及另外兩個話題:Localizing和Globalization ,其一那是很大的話題,其二就目前看來它們已經(jīng)成為軟件工業(yè)中一個重要的環(huán)節(jié),也有一整套專業(yè)的流程和作法。

dotNET中的Resource比起以前可以說有了一個全新的變化,也許正是這種變化使得多語言版本的應(yīng)用程序變得簡單可行。不過目前的VS.NET Beta2還存在一些Bug,有時會有一些莫名其妙的錯誤發(fā)生,相信下一個版本的VS.NET的IDE在這方面會更穩(wěn)定一些。

好吧,讓我們從最簡單的地方開始。



1. 準備一個簡單的原型應(yīng)用程序。

這里將是設(shè)立一個應(yīng)用的最簡單的原型,沒有太多的邏輯和說明,在VS.NET中建立一個Windows Application的Project,隨便拖了一些控件到窗體上,然后又給窗體建立一個主菜單,因為我用的是英文版的VS.NET所以目前這個原型是英文版的。



2. 增加需要的其它Resource到應(yīng)用中



這一步,我添加一幅圖片資源到一個外部的資源文件中,這個圖片將顯示在一個pictureBox中,其實直接在設(shè)計時設(shè)置好控件的Image就可以了,但我想假設(shè)這個圖片在以后的不同語言版本中顯示不同的圖片,當然在這個資源文件中我還添加了一個用于顯示使用的字符串資源。

老實說現(xiàn)在這個版本的VS.NET根本沒有帶可視化的資源工具,居然把資源的修改和顯示合并在XML Designer View中,做一些純字符的資源還可以,如果是圖像資源我寧愿使用SDK中的ResEditort,(不過事先你需要把它編譯成Exe才可以使用,它一般在你Framework SDK安裝目錄下的\Samples\tutorials\resourcesandlocalization 目錄中).具體的可以在VS.NET中這樣做:選取Project->Add New Item->Templates->Assembly Resource File,先命名為myResource.resX.默認這個文件的Build Action屬性是Embeded Resource(附帶的Zip中有一幅IL DASM的圖中可以看到它),保存后,啟動ResEditort加入一幅圖片和一個字符串資源,然后再保存關(guān)閉ResEditor。下面是在程序中如何使用這個外部資源文件中的資源問題了。你可以使用下面的代碼做到:

Dim Res As System.Resources.ResourceManager

Res = New Resources.ResourceManager("EnglishAndChinese.MyResource", Me.GetType().Assembly)



strMsg = Res.GetString("msgHello")



Me.picBox.Image = CType(Res.GetObject("dotNETLogo"), System.Drawing.Image)

上面的代碼演示了你獲得資源和使用圖片資源和字符資源所需要的代碼。EnglishAndChinese.MyResource:MyResource是我們剛剛建立的外部資源文件的名,EnglishAndChinese是我們的應(yīng)用程序或說Project的名。

Res.GetString("msgHello"): msgHello是外部資源中Name項,由此獲得字符串資源。

GetObject("dotNETLogo")演示的是我們將獲得外部資源中Name為dotNETLogo的圖片資源。

現(xiàn)在F5運行,我們可以看到PictureBox中顯示GetObject(“dotNETLogo”)中的圖片,按一個按鈕后在彈出的MessageBox框中將顯示Res.GetString("msgHello")的字符串。



3. 把我們的應(yīng)用變成其它語言版本。

這里分兩步:一是將原型的簡單的WinFrom中顯示的UI變成其它語言版本的;其二是將我們剛剛加入的MyResouce變成其它語言版本的。對于第一步,我們可以先點擊整個窗體,在窗體的Language屬性中選中其它的語言版本比如(Chinese-Simplified),Locatlizable屬性選擇True,然后存盤;接著將窗體上的菜單,控件的文字由英文改為中文字體。然后再存盤 F5你將看到中文版的應(yīng)用程序顯示出來。你還可以將窗體的Language再設(shè)置成(default),Locatlizable設(shè)置成false,然后你又可以看到最初的英文版本的界面,這時F5,你將看到英文版本的應(yīng)用程序。目前的VS.NET Beta2在來回顯示英文和中文版的設(shè)計視圖時很不穩(wěn)定,有時會發(fā)生窗體上的某個控件突然沒有了或是窗體設(shè)計器不能再正常顯示設(shè)計窗體,總之不是很穩(wěn)定。

第二步將MyResource也變成多語言版本的;依然還是選取Project->Add New Item->Templates->Assembly Resource File 不過這次將文件名起名為:MyResource.zh-CHS.resX,同樣象第二步中那樣在資源文件中加上新的資源,不過資源中的Name名必須和英文語言的相同,字符串的叫msgHello,圖片資源叫dotNETLogo,OK后存盤。好了準備工作已經(jīng)基本完成了。



4. 相應(yīng)的一些設(shè)置和測試。



這里主要是一些和代碼相關(guān)的東東了,首先在窗體的寫兩個基本的小函數(shù):

Private Function My_CreateResouce() As Integer

'處理自己的資源文件

Dim Res As System.Resources.ResourceManager

Res = New Resources.ResourceManager("EnglishAndChinese.MyResource", Me.GetType().Assembly)



strMsg = Res.GetString("msgHello")



Me.picBox.Image = CType(Res.GetObject("dotNETLogo"), System.Drawing.Image)



End Function



Private Function InitRegistry() As String



Dim aKey As RegistryKey

Dim strCurrLanguage As String



aKey = Registry.CurrentUser.CreateSubKey(RegistryKeyForccBoy)



If aKey.GetValue("Language") Is Nothing Then

strCurrLanguage = "en-US"

aKey.SetValue("Language", strCurrLanguage)

Else

strCurrLanguage = aKey.GetValue("Language")

End If



InitRegistry = strCurrLanguage



End Function



然后在Form的New()函數(shù)中加入以下代碼

Public Sub New()

MyBase.New()



'This call is required by the Windows Form Designer.

Dim tmpCulture As String

strUICulture = Thread.CurrentThread.CurrentUICulture.DisplayName



tmpCulture = InitRegistry()



Thread.CurrentThread.CurrentUICulture = New CultureInfo(tmpCulture)



InitializeComponent()



'Add any initialization after the InitializeComponent() call



End Sub



不要忘記加入下面的命名空間:

Imports System.Globalization

Imports System.Threading

Imports Microsoft.Win32



上面的代碼完成了對應(yīng)用程序最初的有關(guān)語言版本的選擇,并且把這個信息存儲在了注冊表中。最后利用主菜單菜單的兩個菜單項,來設(shè)置有關(guān)語言版本的選定功能。

Private Sub MenuEnglish_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click

' English

Dim aKey As RegistryKey

aKey = Registry.CurrentUser.OpenSubKey(RegistryKeyForccBoy, True)

aKey.SetValue("Language", "en-US")



End Sub



Private Sub MenuChinese_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem5.Click

' Chinese

Dim aKey As RegistryKey

aKey = Registry.CurrentUser.OpenSubKey(RegistryKeyForccBoy, True)

aKey.SetValue("Language", "zh-CHS")



End Sub



保存你的Project,F(xiàn)5運行。然后選擇菜單中的中文或英文退出后再啟動。下面是運行后的屏幕拷圖:








補充:

目前的VS.NET Beta2有關(guān)多語言在IDE中的切換有時還會有些問題,實際中你可以這樣的方法;首先完成一個英文版本的應(yīng)用,然后用Beta2 SDK的工具Resgen將Form1.resX轉(zhuǎn)換成Form1.resources文件,(Resgen Form1.resX Form1.Resources)然后再用Beta2 SDK新帶的WinRes.exe 打開這個轉(zhuǎn)換的Form1.resources文件,你可以看到和VS.NET相同的窗體(上述的例子還有些不一致比如菜單沒有了),然后修改這些UI的字體和表現(xiàn)成你需要的語言,選擇Save as..在彈出的對話框中選擇你對應(yīng)的語言。dotNET允許你在完成整個應(yīng)用后再新增其它不同的語言版本,只要根據(jù)dotNET的規(guī)范放置你的語言資源DLL,你的程序理論上可以變成是任何語言的版本。對于上述第二步中加的資源文件其實是一種Statelite Assembly 如果不經(jīng)過Strong Name是無法放到GAC中共享的,所以只能放在dotNET資源規(guī)范規(guī)定的目錄中。不過將它多語言化的方法也是類似的,你可以用上面的方法轉(zhuǎn)換resX文件,也可以新建一個資源文件來做到。就目前看來使用VS.NET和手工方式各有利弊,總的一點:目前的dotNET對于多語言版本有了一種很通用和規(guī)范的作法,這一點和原來截然不同了。還有就是Beta2目前在這方面表現(xiàn)得還不是很穩(wěn)定(haha)








好了先到這吧,謝謝你花時間閱讀這篇文章,希望對你有所幫助。另外Demo的圖片中的dotNET標志,是從MS網(wǎng)站上得來的,所以這個Logo版權(quán)歸Microsoft所有,

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 日本三级黄色网址| 欧美一级在线看| 日韩精品一区二区三区久久| 欧美少妇一区二区三区| 色婷婷综合网站| 国产三级三级看三级| 激情婷婷综合网| 日韩av手机版| 91女神在线观看| 自拍偷拍视频在线| 成人在线观看毛片| www.男人天堂网| 成 年 人 黄 色 大 片大 全| 青青视频免费在线| 2018中文字幕第一页| 国产一级爱c视频| 亚洲爆乳无码专区| 一级黄色香蕉视频| 亚洲一级片av| 青春草国产视频| 国产情侣av自拍| 欧美成人乱码一二三四区免费| 五月婷婷六月丁香激情| 国产九九九视频| 国产在线观看欧美| 日韩中文字幕三区| 777视频在线| 日韩亚洲欧美一区二区| 777久久久精品一区二区三区| 无码人妻丰满熟妇区毛片18| 超碰在线播放91| 日本男女交配视频| 人妻丰满熟妇av无码区app| 欧美午夜精品理论片| 国产性生活免费视频| 午夜肉伦伦影院| 成人亚洲免费视频| 亚洲国产精品久久久久婷蜜芽| 奇米影视四色在线| 欧日韩免费视频| 第一区免费在线观看| 国产原创popny丨九色| 亚洲精品www.| 国产偷人视频免费| 女女同性女同一区二区三区按摩| 国产精品一区二区免费在线观看| 中文字幕在线综合| 黄色高清无遮挡| 青青草精品视频在线| 在线观看免费av网址| 日韩中文字幕组| 成年人午夜免费视频| 在线a免费观看| 国产三级三级看三级| 国产成人无码精品久久久性色| 日日夜夜精品视频免费观看| 成年人网站大全| 漂亮人妻被中出中文字幕| 特级毛片在线免费观看| 国产日韩欧美久久| 久久综合久久色| 99久久久无码国产精品6| 91.com在线| 日韩网站在线免费观看| 狠狠干视频网站| 久久www视频| 超碰97在线看| 亚洲精品国产suv一区88| 手机在线免费毛片| 一级片视频免费观看| 午夜免费高清视频| 午夜激情福利在线| 亚洲中文字幕久久精品无码喷水| 黄色一级在线视频| 激情综合网婷婷| 黄色片在线免费| 特黄视频免费观看| 亚洲图片 自拍偷拍| 五月天综合婷婷| 久久www视频| 99在线精品免费视频| 欧美二区在线视频| 国产视频一区二区视频| 成人在线免费播放视频| a在线观看免费视频| 亚洲精品综合在线观看| 中文字幕黄色大片| 成人小视频在线观看免费| 大伊香蕉精品视频在线| 日本少妇高潮喷水视频| 欧美黑人又粗又大又爽免费| 日本中文字幕二区| 国产人妻人伦精品| 99精品人妻少妇一区二区| 免费观看成人网| 色呦呦网站入口| 亚欧无线一线二线三线区别| 国产三级国产精品国产专区50| 玖玖爱视频在线| cao在线观看| 色综合色综合色综合色综合| 日本a级片在线播放| www.超碰com| 国产情侣第一页| www.色偷偷.com| 男女日批视频在线观看| 激情内射人妻1区2区3区| 欧美一级黄色录像片| 国产日产欧美视频| 日韩人妻一区二区三区蜜桃视频| 丰满人妻中伦妇伦精品app| 成人短视频在线看| 精品久久久久久久免费人妻| 男人日女人的bb| 国产探花在线看| 精品久久久久久久免费人妻| 国产精品igao激情视频| the porn av| 国产熟女高潮视频| 日韩激情视频一区二区| 亚洲天堂一区二区在线观看| 精品一区二区中文字幕| 美女扒开大腿让男人桶| 中文 日韩 欧美| 成人综合久久网| 婷婷激情四射五月天| 116极品美女午夜一级| 人人妻人人澡人人爽欧美一区双| 毛片毛片毛片毛片毛| 中文字幕网av| 色乱码一区二区三区在线| 国产裸体舞一区二区三区| 91九色在线观看视频| 国产曰肥老太婆无遮挡| 99久久免费观看| 337p亚洲精品色噜噜狠狠p| 天天成人综合网| 日本丰满大乳奶| 久久久成人精品一区二区三区| 桥本有菜av在线| 国产911在线观看| 日韩视频 中文字幕| 国产欧美久久久久| 国产九色porny| 日韩一级性生活片| 欧美精品久久久久久久久久久| 日韩a级黄色片| 免费av观看网址| 看欧美ab黄色大片视频免费| 国产精品v日韩精品v在线观看| 91国产精品视频在线观看| 制服丝袜中文字幕第一页 | 尤蜜粉嫩av国产一区二区三区| 免费在线观看的毛片| 亚洲欧美国产中文| 免费在线观看污污视频| 国产免费黄色一级片| 91av在线免费播放| 小早川怜子一区二区三区| www国产免费| 在线视频日韩一区| 午夜激情视频网| 国产午夜伦鲁鲁| 天天久久综合网| 春日野结衣av| 亚洲精品成人在线播放| 美女黄色免费看| 午夜视频在线网站| 国产乱淫av片杨贵妃| 污视频网址在线观看| 免费看欧美一级片| 日本中文字幕观看| 国产精品无码人妻一区二区在线| 成人亚洲精品777777大片| 日本美女爱爱视频| 欧美特级aaa| 成人免费视频91| 国产资源中文字幕| 亚洲少妇第一页| 99在线精品免费视频| 欧美成人乱码一二三四区免费| 男女视频网站在线观看| 懂色av粉嫩av蜜臀av| 中文字幕欧美人妻精品一区| 日本大片免费看| 老汉色影院首页| 最新天堂在线视频| 波多野结衣天堂| 黄色片视频在线播放| av免费观看国产| 久久久久久久香蕉| 天天干天天色天天爽| 不卡的在线视频| 天天插天天操天天射| 国产精品97在线| 欧美日韩二三区| 久久久亚洲精品无码| 国产九色porny| 黄页网站大全在线观看| 欧美久久久久久久久久久久久久|