0

情况:我正在制作一个可折叠面板。在我的业务情况下,我需要让小组支持以下内容:

  • “方向”(即,它将停靠在顶部、底部、左侧还是右侧)。这会改变它崩溃的方向以及其他一些事情。

  • 一种“风格”。该产品有一些预定义的视觉样式(定义背景颜色、渐变与否、文本颜色、悬停颜色等)。

问题是:某些风格与某些方向不兼容。以下是要求:

  • 如果他/她将面板编码为具有不兼容的样式和方向,则需要某种方法来防止/警告程序员。例如,如果面板不兼容,则让面板抛出运行时异常将满足此要求。

  • 不允许任何人在运行时动态更改样式或方向。如果需要,我可以允许它在 中“动态”更改InitializeComponent,但不能在其他任何地方更改。

  • 该面板需要在设计视图中可见。但不一定能够在设计视图中拖放,从技术上讲,我什至不需要在设计视图中更改面板的属性。尽管如果可能的话,我显然想要其他任何东西。

一种可能的解决方案:让构造函数接受两个输入:方向和样式。这样,这两个更改都被视为原子操作。如果它们不是同时改变,那么在改变方向/样式和改变另一个之间,面板将处于不一致的状态。我想避免这种情况。

如何让设计视图不使用默认构造函数和/或满足要求的更好做法?

笔记

小组只是提出更广泛问题的示例和用例。我希望这篇文章能够回答有关让设计视图处理我的要求的最佳实践的直接问题。如果 Visual Studio 支持在 中注入非默认构造函数InitializeComponent,那么我想知道如何(以及任何警告)。如果有更好的做法可以满足列出的要求,那么我也想知道。

4

2 回答 2

3

添加对ISupportInitialize界面的支持,设计人员可以使用该界面设置所有属性并告诉您何时完成。

于 2011-08-04T11:36:39.897 回答
2

部分答案:您不能让 Designer 使用一些自定义构造函数。您需要将逻辑放入属性设置器中。

在那里抛出异常可能会导致混乱的设计器错误。如何将字段重置为适当的状态?

您可能需要根据您是否在DesignMode. 如果您还没有,请查看DesignMode 注意事项

于 2011-08-04T11:30:39.733 回答