2014-04-24 88 views
1

是否可以通過代碼更改主窗體的語言屬性?如果是這樣,怎麼樣?Visual Studio 2010 - 更改語言屬性

詳情: 在配置文件中,我設置了lang =「EN」。我想要的是使用本地化設置來更改依賴於此變量的主窗體。我已將本地化的屬性設置爲True

例如:

if (Config.lang == "FR") 
{ 
    //change **Language** property to "French" 
} 
else 
{ 
    //remain (Default) 
} 

的問題是,我沒有看到語言財產的任何地方編碼窗口不管我在哪裏看,所以我想知道如果它這樣做甚至有可能。

回答

1

由於在.Net UI程序中管理資源的方式,最簡單的方法是在創建任何表單之前,在程序的開頭恰當地設置線程語言環境。

首先確定你想從你的配置文件中的文化:

CultureInfo culture = ... whatever 

然後設置主線程的CurrentUICultureCurrentCulture於該區域設置:

System.Threading.Thread.CurrentThread.CurrentUICulture = culture; 
System.Threading.Thread.CurrentThread.CurrentCulture = culture; 

此代碼將進入program.cs在開始Main()

請注意,如果您啓動顯示任何UI(或輸出任何本地化數據)的任何其他線程,則您還需要在這些線程的開始時執行相同的操作。

另請注意,此方法的一個主要侷限性是,程序運行時無法更改區域設置,並且已更新UI以反映它。您必須在程序的開始處設置區域設置。

還有其他的解決方案可以避免這個限制,但它們更復雜。

+0

謝謝,工作就像一個魅力!雖然我不需要把它放在'program.cs'中,但我只是把它放在MainForm()的開頭。不過,謝謝一堆!對不起,我不能投你的答案 - 代表太低。一旦我把這個地方垃圾郵件,我一定會投票! – EVILrokzz

相關問題