9

我为我的公司创建了一个漂亮的 winforms 应用程序。我们让一个平面设计师创建了 GUI,实现起来很痛苦,所有的图形按钮、许多分层的背景和徽标、动画等。

但是现在我的公司想以不同的品牌转售它。但由于我大部分代码都很好,我告诉我的上级我可以在一周内完成一个完全重新命名的版本。基本上,我要做的就是更改 xml 设置文件中的一组设置,用新设置替换图形,然后构建。

问题是如果他们想要 5 或 6 个不同的品牌,我将支持 5 个不同的版本(我真的应该支持 1 个,带有 diff 模板)

问题是(据我所知)在 winforms 应用程序中换出图像并不容易。我在一个文件夹中拥有所有图形资源,但是一旦将每个文件输入到 Visual Studio 中其各自的图像列表或容器中,使其更新的唯一方法是删除它并重新添加它,更改源文件夹不会导致嵌入的图像刷新。对于每个构建来说,这将是非常乏味的,必须有一个更简单的方法。

补充:
所以经过进一步调查,我倾向于某种 resx 文件编辑器。然而,到目前为止我所看到的更专注于将字符串翻译成各种语言,并且要么非常弱,要么根本无法编辑二进制资源,如位图/png。虽然如果您在 xml 查看器中打开一个 resx 文件(我使用带有 .resx 的记事本 2 设置为使用 xml sytax 突出显示)MS 很友好地告诉您每种类型的确切编译方式(主要是 base 64 的变体)

4

5 回答 5

12

我认为您的目标应该是拥有“品牌化”的资源文件;您实际上是在本地化您的应用程序,除了您只有几个不同版本的英语。

您可以使用 ResGen.exe 和 ResourceManager 加载外部资源文件,因此您可以使用 5 个不同的“资源”文件但保持代码库相同。

这篇文章也可能有帮助...... http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/b388c700-0e07-452b-a19e-ce02775f78a6/

编辑:顺便说一句,我会附议,如果你在这方面付出了很大的努力,考虑 WPF ......大多数“图形”元素都可以在本地完成,特别是如果它是渐变和东西,而不是提到简单的模板。

于 2009-02-23T20:57:22.973 回答
0

我要做的只是在启动时从一个文件夹加载磁盘的所有图形,并根据需要创建任何所需的图像列表,而不是在设计器中执行此操作。如果您担心有人会窃取图形,那么我将为我的图形创建一个简单的文件格式(可能是加密的),并为您或设计师创建一个简单的小应用程序,用于从常规文件转换为这种格式。那么这只是一个在不同品牌之间交换这个文件夹的问题。

于 2009-03-25T17:20:31.993 回答
0

如果您的大多数表单都是相似的(即相同的徽标、底部的相同按钮等),您可以使用WinForms 上的可视继承来定义一组“基本表单”,您的实际表单将从这些“基本表单”继承。

如果您为每个品牌开发了一组“基本表单”,则每组在一个单独的程序集中您可以将生成新品牌所需的工作减少为生成一组新的基本表单。

希望能帮助到你

于 2009-03-25T17:45:10.390 回答
0

现在为时已晚,但 WPF 会是比 WinForms 更好的选择,因为它更容易换肤。

但是看看DevExpress为 WinForms 做了什么,因为他们的控件有一个皮肤系统。将 DevExpress winform 控件替换为标准 winform 控件并不难。

于 2009-03-30T21:11:35.347 回答
-2

我认为您应该考虑为表单的可动态替换区域创建用户控件。在运行时,您可以将一个程序集换成另一个程序集。

于 2009-02-23T20:36:44.130 回答