如何在不改变文化的情况下更改c#winform应用程序的资源文件?

时间:2010-08-04 03:49:43

标签: c# winforms resources culture

我们有一个winform应用程序已经开发了一段时间。它有几种图像和控制颜色,可以创造品牌体验。我们有第二个客户想要相同的产品,但品牌不同。

所以我们在控制designer.cs文件中有代码行,如:

this.BackgroundImage = global::MyNameSpace.Properties.Resources.background;

似乎资源文件是可行的方式,因为我可以简单地更改文化并使用具有不同图像的单独资源文件。

但我不想改变文化(我不希望显示日期,货币等)被改变,它只是闻起来。

我可以在运行时或编译时手动更改资源文件而无需更改文化吗?

有没有更好的方法来实现这一结果?

另外,您如何/可以使用资源文件来设置控件颜色(例如,将所有背景从黑色更改为红色)?

2 个答案:

答案 0 :(得分:1)

您可以从具有资源的单独文件中读取资源(但不依赖于全球化的附属程序集机制)。您也可以使用主程序集编译默认资源作为后备。

您可以使用Resgen.exe .resx 文件创建 .resources 文件,然后使用ResourceManager进行阅读:

//note that resourceFilename does NOT include the ".resources" extension
var rm = ResourceManager.CreateFileBasedResourceManager( resourceFilename
                                                        ,resourceDir
                                                        ,null);
this.BackgroundImage = (Image) rm.GetObject("background");

答案 1 :(得分:0)

您可以考虑的一个选项是创建自定义文化,例如,您可以创建一个名为

的文化
ClientA-fr-FR
ClientB-fr-FR

您为每个人创建资源,您应该能够适当地设置线程文化。

这是一个链接"How to: Create Custom Cultures"