.NET应用程序中的窗体或控件的多种模式?

时间:2009-02-18 18:09:32

标签: .net forms user-interface controls

对于在WinForms .NET应用程序中重用表单或控件是否设计为多种模式,是否有任何意见?我经常发现自己想要这样做。我将有一些需要在多个地方使用的UI,而不是重复使用代码,我将给表单一个模式,确定文本显示的内容,某些元素是否可见,以及如何元素定位。

这似乎总是有点像kludge,所以我想知道是否有人以不同的方式解决这个问题?

3 个答案:

答案 0 :(得分:2)

我认为可以归结为您在单个表单中添加不同的模式。例如,隐藏单个复选框的模式比交换大多数控件的模式更容易维护。只有您可以决定您的表格在此频谱中的位置。

我还会尝试识别和使用技术来最小化多种模式的复杂性。我想到了一些想法:

  • 采用分层方法将业务逻辑与显示分开
  • 将相关控件的系列放在单个可重用单元(例如Panel或UserControl)中
  • 使用组织控件,例如PropertyGrid,它可以反映和显示所选对象的属性,而不是手动隐藏或显示对象类中baesd形式的控件。

答案 1 :(得分:1)

我会说,只要表格“小”足以使模式不会造成维护噩梦,并且,只要每种模式的功能密切相关,那么它应该没问题。在某些时候,如果维护变得更麻烦,那么你可能需要将其分开。

例如,我有一个表单,既可以作为给予客户的联系信息列表,也可以作为一般的“搜索联系人”表单。在构造函数中,我是否传递客户ID告诉表单在哪种模式下。

答案 2 :(得分:0)

仅当表单编辑的数据相同但上下文不同时才这样做。在这些情况下,我经常将表单传递给上下文枚举,表单使用它来启用/禁用某些字段或更改某些文本。

例如,我现在在应用程序中的表单允许我编辑“频道”(多路复用频道)。当我使用表单创建“新”频道时,频道名称是一个可编辑的字段。但是当我编辑现有频道时,名称是我不想更改的关键字段,因此该字段将被禁用。它是完全相同的形式,但在上下文中,表单确定是否禁用/启用该字段。

最后,我认为这是一种相当普遍的做法。