3 回答
TA贡献1797条经验 获得超6个赞
有关Windows窗体工作方式的设计决策或多或少排除了Windows窗体组件的参数化.ctors。您可以使用它们,但是当您这样做时,便会超出公认的机制。而是Windows窗体更喜欢通过属性初始化值。如果未广泛使用,这是一种有效的设计技术。
不过,这有一些好处。
易于客户使用。客户端代码不需要跟踪一堆数据,它可以立即创建某些内容,并以有意义(如果不感兴趣)的结果来查看它。
设计者易于使用。通常,设计器代码更清晰,更易于解析。
阻止单个组件中异常的数据依赖关系。(尽管甚至Microsoft都用吹灭了它
SplitContainer
)
表单中也有很多支持,可以与设计师一起使用此技术。,和这样的东西DefaultValueAttribute
,使您有机会以最小的努力提供丰富的客户体验。DesignerSerializationVisibilityAttribute
BrowsableAttribute
(这并不是在Windows窗体中为客户体验做出的唯一折衷。抽象基类组件也可能变得毛茸茸。)
我建议坚持使用无参数构造函数,并在Windows窗体设计原则中进行工作。如果UserControl
必须执行一些实际的先决条件,则将它们封装在另一个类中,然后通过一个属性将该类的实例分配给您的控件。这也将更好地分离关注点。
TA贡献2021条经验 获得超8个赞
不幸的是,这是一个经常发生的设计问题,而不仅仅是控制空间。
在很多情况下,即使无参构造函数不是理想的,您也需要有无参构造函数。例如,如果没有无参数构造函数,则许多值类型IMO会更好,但是创建一个可以那样工作的类型是不可能的。
在这些情况下,您仅需以最佳方式设计控件/组件。使用合理的(最好是最常用的)默认参数可以极大地帮助您,因为您至少(希望)可以使用良好的值初始化组件。
另外,尝试以某种方式设计组件,以便在生成组件后可以更改这些属性。使用Windows Forms组件通常很好,因为在安全加载时间之前,您几乎可以做任何事情。
再次,我同意-这不是理想的选择,但这只是我们必须与之共处和解决的问题。
- 3 回答
- 0 关注
- 909 浏览
添加回答
举报