如何防止设计视图使用默认构造函数
本文关键字:默认 构造函数 视图 何防止 | 更新日期: 2023-09-27 18:04:34
情况:我正在创建一个可折叠面板。在我的业务情况下,我需要让面板支持以下内容:
-
一个"方向"(即,它将停靠在顶部,底部,左侧还是右侧)。这会改变它坍塌的方向和其他一些东西。
-
"风格"。本产品有一些预定义的视觉样式(定义背景颜色,渐变与否,文本颜色,悬停颜色等)。
问题是:某些风格与某些方向不兼容。以下是要求:
-
需要有一些方法来防止/警告程序员,如果他/她编码面板具有不兼容的风格和方向。例如,如果它们不兼容,让面板抛出运行时异常将满足此要求。
-
不允许任何人在运行时动态更改样式或方向。如果我需要,那么我可以允许它在
InitializeComponent
中"动态"更改,但不能在其他任何地方更改。 -
面板需要在设计视图中可见。但不一定可以在设计视图中拖放,技术上我甚至不需要改变设计视图中面板的属性。不过,如果可能的话,我显然想要这两种东西中的任何一种。
一个可能的解决方案:让构造函数接受两个输入:一个方向和一个样式。这样,两个更改都被视为原子操作。如果它们没有同时改变,那么在改变方向/样式和改变另一个之间,面板将处于不一致的状态。我想避免那样。
如何让设计视图不使用默认构造函数和/或满足需求的更好实践?
注意
小组只是一个例子和一个用例来提出更广泛的问题。我希望这篇文章能回答关于让Design View处理我的需求的最佳实践的直接问题。如果Visual Studio支持在InitializeComponent
中注入非默认构造函数,那么我想知道如何(以及任何警告)。如果有更好的做法满足所列出的要求,那么我也想知道。
添加对ISupportInitialize
接口的支持,设计人员可以使用它来设置所有属性并告诉您何时完成。
部分答案:你不能让Designer使用一些自定义构造函数。你需要把逻辑放到属性设置中。
在那里抛出异常可能会导致混乱的设计器错误。如何将字段重置为一些适当的状态呢?你可能需要区分的行为取决于你是否在DesignMode
。如果你还没有,看看DesignMode的注意事项。