C# 以图形方式模板.NET winforms应用程序

C# 以图形方式模板.NET winforms应用程序,c#,visual-studio,winforms,user-interface,desktop,C#,Visual Studio,Winforms,User Interface,Desktop,我为我的公司创建了一个非常花哨的winforms应用程序。我们让一个图形设计师来创建GUI,这是一个很难实现的过程,所有的图形按钮,很多分层的背景和徽标,动画等等 但现在我的公司想以不同的品牌转售。但由于我大部分代码都写得很好,我告诉我的上级,我可以在一周内完成一个完全改名的版本。基本上,我所要做的就是更改xml设置文件中的一组设置,用一组新的图形替换图形,然后构建 问题是,如果他们想要5个或6个不同的品牌,我需要支持5个不同的版本(我真的应该支持1个,使用不同的模板) 问题是(据我所知)在wi

我为我的公司创建了一个非常花哨的winforms应用程序。我们让一个图形设计师来创建GUI,这是一个很难实现的过程,所有的图形按钮,很多分层的背景和徽标,动画等等

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

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

问题是(据我所知)在winforms应用程序中交换图像并不容易。我将所有图形资源都放在一个文件夹中,但一旦每个文件都输入到visual studio中各自的图像列表或容器中,更新它的唯一方法就是将其删除并重新添加,更改源文件夹不会导致嵌入的图像刷新。这将是令人难以置信的乏味的每一个建设,必须有一个更简单的方法

附加组件:

因此,经过进一步的调查,我倾向于使用某种resx文件编辑器。然而,到目前为止,我所看到的那些更侧重于将字符串翻译成各种语言,它们要么非常弱,要么根本无法编辑位图/png之类的二进制资源。虽然如果您在xml查看器中打开一个resx文件(我使用notepad 2,其中.resx设置为使用xml sytax突出显示),MS可以准确地告诉您每种类型是如何编译的(主要是base 64的变体)

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

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

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

这篇文章也可以帮助。。。


<> > >编辑: BTW,我将再次评论,如果你在这方面做了大量的努力,考虑WPF…大多数“图形”元素都可以在本地完成,尤其是在渐变和其他方面,更不用说简单的模板制作了。

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

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

如果您为每个品牌开发了一组“基本形式”,则可以在单独的部件中插入每个“基本形式”,生成新品牌所需的工作量将减少到生成一组新的基本形式


希望它有帮助

现在为时已晚,但WPF会是比WinForms更好的选择,因为它更容易进行蒙皮


不过,看看WinForms的功能,因为它们的控件有一个蒙皮系统。将DevExpress winform控件替换为标准winform控件并不难。

这是一个可怕的想法。一切都是图形化的。我想把代码保存在一个单独的地方。为每个构建创建新的程序集会让我比现在更糟糕。我以为你指的是标题图像。我建议您创建一个单独的用户控件,将图像作为嵌入式资源,然后在运行时动态加载相应的控件。每个品牌都有自己的头组件。如果你有浪费的图像,这不是办法。太糟糕了,你在做winforms,这将是WPF中的蛋糕。该应用程序是在一年多前启动的,使用了从我们几乎4年前的版本导入的大量代码。不幸的是,这次我没有看到我们切换到WPF。除了WPF,我不确定这就是我要寻找的,我是否仍然需要将每个图像单独添加到备用资源文件中?我想让制图员修改文件夹中的所有图像,然后在构建之前将该文件夹替换为当前文件夹。