我为我的公司创建了一个非常漂亮的winforms应用程序。我们有一个图形设计师创建GUI,这是一个很难实现,所有图形按钮,大量分层背景和徽标,动画等。
但现在我的公司想要在不同的品牌下转售它。但由于我主要是编码得很好,我告诉我的更高层次我可以在一周内完成一个完全重新命名的版本。基本上我要做的就是更改xml设置文件中的一堆设置,用新的设置替换图形,然后构建。
问题是如果他们想要5个或6个不同的品牌,我会有5个不同的版本来支持(我真的应该支持1,使用差异模板)
问题是在winforms应用程序中交换图像并不容易(据我所知)。我将所有图形资源放在一个文件夹中,但是一旦将每个文件输入到visual studio中的相应图像列表或容器中,获取它的唯一方法是删除它并重新添加它,更改源文件夹不会导致嵌入的图像刷新。对于每个构建来说,这将是非常繁琐的,必须有一个更简单的方法。
添加:
因此经过一些进一步的调查,我倾向于某种resx文件编辑器。然而,到目前为止,我所看到的更侧重于将字符串转换为各种语言,并且要么非常弱,要么根本无法编辑二进制资源,如bitmaps / png。虽然如果你在xml查看器中打开一个resx文件(我使用notepad 2并将.resx设置为使用xml sytax突出显示),MS很友好地告诉你每种类型的编译方式(主要是base 64的变体)
答案 0 :(得分:12)
我认为你的目标应该是拥有“可品牌”的资源文件;你基本上是在本地化你的应用程序,除了你只有几个不同版本的英语。
您可以使用ResGen.exe和ResourceManager加载外部资源文件,这样您就可以使用5个不同的“资源”文件,但保持代码库相同。
这篇文章也可以帮助...... http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/b388c700-0e07-452b-a19e-ce02775f78a6/
编辑:顺便说一句,我会在评论中说,如果你在这方面付出了很多努力,请考虑WPF ......大多数“图形”元素都可以完成特别是如果它是渐变和东西,更不用说简单的模板了。
答案 1 :(得分:0)
我要做的只是在文件夹启动时加载磁盘的所有图形并根据需要创建所需的任何图像列表,而不是在设计器中执行此操作。如果你担心有人会窃取图形,那么我会为我的图形创建一个简单的文件格式(可能是加密的)和一个简单的小应用程序供你或设计师用来从常规文件转换成这种格式。然后,这只是在不同品牌之间交换此文件夹的问题。
答案 2 :(得分:0)
如果您的大多数表单相似(即相同的徽标,底部的相同按钮等),您可以使用WinForms上的visual inheritance来定义一组“基本表单”,您的实际表单将从该表单继承。
如果您为每个品牌开发了一套“基本表单”,每个集合在一个单独的程序集中,您可以插入生成新品牌所需的工作,以生成一组新的基本表单。< / p>
希望有所帮助
答案 3 :(得分:0)
现在为时已晚,但WPF本身比WinForms更好,因为它更容易上皮。
但是看看DevExpress对WinForms的作用,因为它们的控件有一个蒙皮系统。将DevExpress winform控件替换为标准winform控件并不太难。
答案 4 :(得分:-2)
我认为您应该考虑为表单的动态可替换区域创建用户控件。在运行时,您可以将一个程序集换出另一个程序集。