我们有一个winform应用程序已经开发了一段时间。它有几种图像和控制颜色,可以创造品牌体验。我们有第二个客户想要相同的产品,但品牌不同。
所以我们在控制designer.cs文件中有代码行,如:
this.BackgroundImage = global::MyNameSpace.Properties.Resources.background;
似乎资源文件是可行的方式,因为我可以简单地更改文化并使用具有不同图像的单独资源文件。
但我不想改变文化(我不希望显示日期,货币等)被改变,它只是闻起来。
我可以在运行时或编译时手动更改资源文件而无需更改文化吗?
有没有更好的方法来实现这一结果?
另外,您如何/可以使用资源文件来设置控件颜色(例如,将所有背景从黑色更改为红色)?
答案 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
您为每个人创建资源,您应该能够适当地设置线程文化。