代码之家  ›  专栏  ›  技术社区  ›  Andrew Queisser

如何处理以一个表单类结束的.NET TabPage控件?

  •  3
  • Andrew Queisser  · 技术社区  · 16 年前

    我想用TabControl构造一个表单,但我想避免每个TabPage上的每个控件都成为我要添加TabControl的表单的成员。到目前为止,我已经确定了这些选项,请评论或建议替代方案:

    2) 只保留主窗体上的控件,但将控件变量public和cut以及过去的所有实际代码转换为单独的类

    4) 从Tabpage派生(不确定这是否有效以及设计时的含义是什么)

    安得烈

    2 回复  |  直到 16 年前
        1
  •  3
  •   John Rudy    16 年前

    在任何复杂的WinForms应用程序中,您可能会遇到表单上控件过多的问题。并不是说你会遇到一个硬限制,而是你会遇到一个痛点——就像你描述的那样。

    在大多数情况下,对我来说,您的选项#1——每个选项卡页面的用户控件——是最不痛苦的方法。它允许您以自己的方式封装控件的逻辑分解,并适当地确定它们的范围。

    您的用户控件上的属性。不过,解决这个问题的方法相当简单:使用自定义类来表示“绑定”到所述控件的数据,然后为该类的绑定实例公开单个属性。

    总体而言,您将拥有更好的体系结构,更易于维护,并且作为额外的奖励,您不会在尝试使表单正常工作时发疯。:)

    编辑:

    我应该注意到,您可能还需要从表示选项卡页面的用户控件中公开一些自定义事件。本质上,如果选项卡上有一个控件,父窗体需要该控件的事件,则必须创建一个事件并引发它,以便父窗体知道它。这并不十分困难,但可以向用户控件添加重要的LOC。

        2
  •  2
  •   Phil Wright    16 年前

    选项1是最好的,因为它允许您使用设计器来布局UserControl的内容,并且使不同的开发人员可以轻松地同时处理不同的UserControl实例。

    选项2是一个坏主意,因为如果您想更改布局,设计师将生成一些新代码,您的剪切粘贴必须手动更正。

    选项3的工作量是使用设计器组织布局的10倍。

    选项4与UserControl相比没有任何好处,但您需要对TabPage类进行一些更改,以使其能够作为设计图面使用。

    所以我会坚持选择1。