如果我有大量的类,每个类在某些方面都相似(它们都共享一个公共基类,但每个类都做不同的事情),我需要为每个类创建Windows表单,以便轻松更改他们通过GUI的价值观,最好的方法是什么?:
为VS'表单设计器中的每个对象创建一个匹配表单,或者
使用代码在运行时动态创建表单。
#2对我来说最有意义,因为很多这些对象将共享表单的非常常见的功能,特别是“确定”和“取消”按钮。但是一个对象可能需要在表单上绘制一个文本框,而另一个可能需要绘制一个组合框。更不用说,如果我想在“确定”和“取消”按钮上放置图标,我必须为设计师中的每个表单副本执行此操作,这听起来好像很快就会失控。 / p>
但是通过代码理智来绘制表格吗? VS'表单设计师非常精致,旨在让生活更轻松。我是否明智地考虑忽略其功能并通过代码潜入表格设计的堑壕战?
有没有更好的方式我不知道?或者是否有基于现有对象属性自动创建表单的示例?
答案 0 :(得分:1)
方法2是我强烈推荐的。您可以充分利用编码的所有优势,例如继承功能。一切都是可见的,而不是埋藏在设计师的财产中。
投资编写一些帮助类和扩展方法。任何你可以“推高”的东西都会这样做。基本表单到特定派生类的自定义应仅限于在所需布局中添加特定字段。
我在每个字段(通常)中进行1次方法调用,以创建绑定到objects属性的标记字段,很好地定位在表单上。无论是文本,日期,数字上/下,下拉(基于枚举)等。表单负责确定Ok / Cancel行为,包括告知对象保存更改或在表单被取消时还原。
一个很好的帮助是我使用了一套非常好的完整的第三方组件,其中包括基本的编辑控件,这些组件放在一个“布局”控件中,用于处理定位,组等。没有更多的摆弄控件一旦表格被改变,就必须一遍又一遍地去做。作为奖励,当用户重新调整表单大小时,布局控件会自动缩放和调整内容。此外,在应用程序级别,可以轻松地为表单和控件提供任何一种视觉样式。
您可以向类属性添加属性,甚至可以取消显式表单自定义。我没有走那么远,可能不会。满足每种可能性需要一个完整的属性系统,而在代码中,如果需要,你总是可以做一些特别的事情。
对于任何超过一次性表格的内容,我都不会使用表单设计器方法。如果有一个很大的类层次结构并且您可以控制设计,那么代码就是可行的方法。嘿 - 我们是程序员如此摆弄事物一个接一个不是游戏。
你第一次需要做出一些广泛的改变,你就会领先。