有一個基本的WinForm問題:默認情況下,爲每個表單或用戶控件(以及designer.cs)創建一個resx文件。這個resx適用於所有的控件和通過UI添加到控件的文本。程序化字符串的表單資源使用情況?
我想知道如果我可以使用相同的resx來添加必須以編程方式使用並基於條件附加到控件的字符串嗎?在任何情況下resx都會被覆蓋,這個自定義字符串會被刪除嗎? 這種情況下遵循的最佳做法是什麼?
有一個基本的WinForm問題:默認情況下,爲每個表單或用戶控件(以及designer.cs)創建一個resx文件。這個resx適用於所有的控件和通過UI添加到控件的文本。程序化字符串的表單資源使用情況?
我想知道如果我可以使用相同的resx來添加必須以編程方式使用並基於條件附加到控件的字符串嗎?在任何情況下resx都會被覆蓋,這個自定義字符串會被刪除嗎? 這種情況下遵循的最佳做法是什麼?
自動生成的會被覆蓋(我使用的是2005),所以我不會使用相同的文件。我會建議在你的項目中爲這樣的.resx文件創建一個單獨的區域。通常我會爲每個表單創建一個.resx,當然會匹配這個名稱。
編輯:Here是我最近在使用.resx文件本地化應用程序時組織文件/文件夾結構的更詳細的答案。
Resources.resx文件中的字符串資源存在一個奇怪的問題。我沒有明顯的方式發現如何使用IDE爲其他語言創建新的資源表。它可以通過手工完成。請按照下列步驟:
構建您的程序。您應該使用附屬程序集名爲projectname.resources.dll在項目的bin \ Debug目錄中獲得一個新文件夾。這個衛星程序集包含本地化的字符串和表單中的任何本地化資源。測試它的代碼是這樣的:
public Form1() {
System.Threading.Thread.CurrentThread.CurrentUICulture =
System.Globalization.CultureInfo.GetCultureInfo("fr-FR");
InitializeComponent();
textBox1.Text = Properties.Resources.String1;
}
在你的表單上,將'Localizable'設置爲'true',然後改變'Language'屬性。 – 2009-12-07 15:06:00
的確我還沒有找到。 ASP.NET項目有菜單工具 - >生成資源文件,但WinForms沒有。我對嗎? – abatishchev 2012-02-15 19:49:25
btw,真的需要'ResXFileCodeGenerator'嗎?默認.resx具有BuildAction = EmbeddedResource,但CustomTool爲空。 – abatishchev 2012-02-15 19:50:11
或者你可以試試這個:
添加在主代碼();
using System.Resources;
ResXResourceWriter rw = new ResXResourceWriter("Resources.de-DE.resx");
rw.AddResource("String1", "de");
rw.Close();
...
更多的文件
轉到bin目錄重複,並移動XML(RESX)文件(S)或許屬性的文件夾。
轉到nobugz後的第5-9步。
皮特,你指的是什麼nobugz帖子? – bschandramohan 2009-12-11 15:54:10
不要阻止你,但你可能會對這個「仇恨狂歡」(基於VS 2003)關於ResX文件感興趣:http://www.windojitsu.com/blog/resxsucks.html希望情況會更好現在,但我仍然很害怕直接使用它們。 – BillW 2009-11-19 06:57:14
對於「杯是半滿」的看法(?)也許考慮:http://stackoverflow.com/questions/676312/modifying-resx-file-in-c – BillW 2009-11-19 06:59:14
有趣的鏈接..感謝指出那些BillW – bschandramohan 2009-12-11 15:53:24